2022-01-07 06:08:17 +00:00
|
|
|
import { DEFAULT_TEST_DATA_SOURCE_TIMEOUT_MS } from "@appsmith/constants/ApiConstants";
|
2021-03-22 09:22:24 +00:00
|
|
|
import API from "api/Api";
|
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
https://github.com/appsmithorg/appsmith/commit/7cbb12af886621256224be0c93e6a465dd710ad3,
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 11:41:47 +00:00
|
|
|
import type { ApiResponse } from "./ApiResponses";
|
|
|
|
|
import type { AxiosPromise } from "axios";
|
2019-11-07 09:32:38 +00:00
|
|
|
|
2023-07-03 13:06:05 +00:00
|
|
|
import type { Datasource, DatasourceStorage } from "entities/Datasource";
|
2019-11-07 09:32:38 +00:00
|
|
|
export interface CreateDatasourceConfig {
|
|
|
|
|
name: string;
|
|
|
|
|
pluginId: string;
|
2023-05-19 18:37:06 +00:00
|
|
|
type?: string;
|
2023-07-03 13:06:05 +00:00
|
|
|
// key in the map representation of environment id of type string
|
|
|
|
|
datasourceStorages: Record<string, DatasourceStorage>;
|
2020-03-06 04:59:24 +00:00
|
|
|
//Passed for logging purposes.
|
2020-04-28 06:52:53 +00:00
|
|
|
appName?: string;
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
feat: Simplified Google Sheets queries (#14869)
* Client changes 1
* add DSL functionality
* Temp commit for refactoring changes
* Do I even know what I'm doing here?
* chore: Second GS layout
* Update: Visibility conditional outputs for schemas
- Added the output from conditional outputs for schema children too
* Update: Entity selector visibility control
- Added logic for controlling visibility of sub components via the JS expressions system
* Update: Passing disabled prop to toggle button
* Update: Passing disabled prop to toggle btn
* Update: Styled component for toggle button
- Added disabled styles based on the disabled prop sent to the toggle form view JSON button
* Update: configProperty role in Entity Selector
- Removed dependance of the configProperty of the entity selector children to it's parent component
* Update: type of placeholder key
- Made placeholder key from form config JSON to accept either string or an object
- Earlier only string was accepted
- This is for pagination component
* Update: Added placeholder control for pagination
* Client changes 1
* add DSL functionality
* Do I even know what I'm doing here?
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* temp triggers
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395)
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* fix: updated tooltip ui, where condition placement, sort by ui
* temp form data access logic
* fix: updated sorting type width ui
* fix: updated ui for spacing, width and text issues
* Update: Type for tooltip of UQI forms
- Added option to send an object to the tooltipText object.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: tooltip for pagination component
- Added handling to parse the tooltip for multiple components.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: Type cast for tooltip component
- Made the content passed to tooltip component as a string only
* Update: Fixed tooltip component CSS
* Update: Dropdown option component
- Added a tooltip wrapper to each option
- This is to show on hover text like disabled state
* fix: updated ẇhere clause broken ui for condition
* Add: functions to check and extract expressions
- Loop through the formConfig and find any keys that have a value that is bindable
- Used pre defined regex to check if value is a moustache binding
* Add: Types for evaluated form configs
- Added types for the form configs to be evaluated and their output post eval
* Add: Flow to run the form config
- Run the form config and update the result to the redux state
* Update: Name of the type for formconfigs
- Updated since it was clashing with a component of the same name
* Add: Function to enforce config type checks
- This is done so that the improper configs can be weeded out and the rest of the form can be shown
* Add: Function to update evaluated config
- Added option to update the config if it's values needed evaluation
* Add: Type check for schema sections
* Update: Error handling for invalid control type
- We were throwing an exception till now, changed it to a warning text
* Add: Exposed tooltip for dropdown option disabled state
* Update: switch to json mode functionality
- Added logic to convert data to a string rather than an object when the first switch to JSON mode happens
* Update: Added key to tooltip for dropdown options
* Trigger API modification
* Add: function to fetch default trigger URL
* Update: Made URL optional in dynamic trigger config
* Update: Dynamic trigger API call
- Made the API call for dynamic triggers have URL as optional field
- Added type check to the response of the API call
* Update: resp type for trigger APIs
* Update: Moved code to utils folder
- Moved functions for UQI form eval processing to utils file
* Update: passing original controltype to JS switch
* Update: config for JSON editor mode
- Updated the config to have different options for JSON mode depending on the original control type
* Update: Connected line numbers flag to config
* Revert: CSS changes for tooltip
* Refactor: Removed consle
* Add: type for the config of dynamic values
* Add: Feature to evaluate config for triggers
* Refactor: fix type check errors
* fix: dropdown ui width with text alignment
* Update: fixed selector for dynamic values
* Update: selector call for fetchDynamicValues
* Add table header index prop for columns selector
* migration partial commit
* migration partial commit
* Refactor: removed unused import
* Update: reused function for checking dynamic value
* Update: removed unused import
* Fix format JSON issues
* Retrieve binding paths from entity selector components
* Fixes 6 remaining issues with UQI implementation
* Fix dropdown issues
* Fix dropdown height issues and fixes triggering of APIs when option is deselected
* Migration changes
* Fix QA generated UQI issues
* Fix projection component height and route change logic
* Fix multi select dropdown placeholder text issue and json stringify issue with switching view types
* Reset entity type value when command value changes
* Test changes
* Review comments
* Moved migrations around
* Corrected import statement
* Added JSON schema migration
* Updated schema version
* perf improvements and filter dropdown options feature
* Fix Code mirror component config for toggleComponentToJson input fields.
* Fix prettier issues
* fix prettier issues
* Fix style issues as a result of the merged conflicts
* Fix failing test case
* Fixed a few other flows (#14225)
* Fixed a few other flows
* Review comments
* Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues.
* More fixes (#14367)
* Factor in the root formconfig parent key.
* Fix flickering issues, and evaluatedFormConfig issues
* fix: Teeny bugs (#14455)
* Teeny bugs
* Added previous functionality as is
* Improvements in the way we fetch dynamic values
* Fix stringiification issue and cyclic dependency issues
* Resolve projection component values deletion
* Resolve merge conflicts and fix prettier issues
* fix: Tsc issues
* Fix property pane connection navigation
* updating ee locator
* updating inputfield locator
* dropdown locator update
* Merge conflict not properly resolved.
* Fix s3 spec
* Fix Mongo Spec
* Fix some more tests
* fix: prevent cyclic dependency when switching to js mode (#14668)
* add delete events for change from array to string in diff
* add test to assert absence of cyclic dependency error when switching to js in switchgroup widget
* Assert that evaluation is not disabled when no cyclic dependency happens
* Cypress test preparations for google sheets and form controls
* Fixed a few test errors (#14874)
* Add: unit tests for uqi UI updates
- view type tests
- conditional output extraction
- processing conditional output to handle view/enabled state of the component
* Add: completed isValidFormConfig test
* Update: improved tests for update config
- These tests cover the functionality to update a section config after it's components are done evaluating
* Fix failing cypress tests and cyclic dependency issue
* Fixes some more tests
* Fixed migration of row objects (#14896)
* Bumped the version of design system package
* Update: reverted change to EE selector
* Fix deletion pointer
* Update: selector for js on load spec
- Synced with changes related to ADS dropdown
* Fix mongoDBShoppingCart spec
* Remove comments
* Fix: mongo shopping cart test failures
* fix: mongo shopping cart spec
* Dummy push to retrigger vercel
* fix: mongo shopping cart spec
* Update MongoDBShoppingCart_spec.js
* fix: removed unused click away
* dummy commit
* Update: moved helper functions to separate file
* Add: added tests for saga functions
- Worked on testing for
- extractFetchDynamicValueFormConfigs
- extractQueueOfValuesToBeFetched
* Add if check for queueOfValuesToBeFetched
* Resolve review comments
* Empty-Commit
Co-authored-by: Irongade <adeoluayangade@yahoo.com>
Co-authored-by: Ayush Pahwa <ayush@appsmith.com>
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
|
|
|
// type executeQueryData = Array<{ key?: string; value?: string }>;
|
|
|
|
|
type executeQueryData = Record<string, any>;
|
2021-07-29 08:13:10 +00:00
|
|
|
|
2023-08-30 07:14:14 +00:00
|
|
|
interface executeDatasourceQueryRequest {
|
2021-07-29 08:13:10 +00:00
|
|
|
datasourceId: string;
|
2023-08-30 07:14:14 +00:00
|
|
|
data?: executeQueryData;
|
2021-07-29 08:13:10 +00:00
|
|
|
}
|
|
|
|
|
|
2019-11-07 09:32:38 +00:00
|
|
|
class DatasourcesApi extends API {
|
|
|
|
|
static url = "v1/datasources";
|
|
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async fetchDatasources(
|
2022-06-15 15:37:41 +00:00
|
|
|
workspaceId: string,
|
2023-10-09 13:54:06 +00:00
|
|
|
): Promise<AxiosPromise<ApiResponse<Datasource[]>>> {
|
2022-06-15 15:37:41 +00:00
|
|
|
return API.get(DatasourcesApi.url + `?workspaceId=${workspaceId}`);
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async createDatasource(
|
|
|
|
|
datasourceConfig: Partial<Datasource>,
|
|
|
|
|
): Promise<any> {
|
2024-06-24 11:47:23 +00:00
|
|
|
// This here abomination is to remove several fields that are not accepted by the server.
|
|
|
|
|
for (const [name, storage] of Object.entries(
|
|
|
|
|
datasourceConfig.datasourceStorages || {},
|
|
|
|
|
)) {
|
|
|
|
|
datasourceConfig = {
|
|
|
|
|
...datasourceConfig,
|
|
|
|
|
isValid: undefined,
|
|
|
|
|
datasourceStorages: {
|
|
|
|
|
...datasourceConfig.datasourceStorages,
|
|
|
|
|
[name]: {
|
|
|
|
|
...storage,
|
|
|
|
|
isValid: undefined,
|
|
|
|
|
toastMessage: undefined,
|
|
|
|
|
datasourceConfiguration: {
|
|
|
|
|
...storage.datasourceConfiguration,
|
|
|
|
|
isValid: undefined,
|
2024-06-29 08:57:36 +00:00
|
|
|
authentication: DatasourcesApi.cleanAuthenticationObject(
|
|
|
|
|
storage.datasourceConfiguration.authentication,
|
|
|
|
|
),
|
2024-06-24 11:47:23 +00:00
|
|
|
connection: storage.datasourceConfiguration.connection && {
|
|
|
|
|
...storage.datasourceConfiguration.connection,
|
|
|
|
|
ssl: {
|
|
|
|
|
...storage.datasourceConfiguration.connection.ssl,
|
|
|
|
|
authTypeControl: undefined,
|
|
|
|
|
certificateType: undefined,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
} as any;
|
|
|
|
|
}
|
|
|
|
|
|
2019-11-07 09:32:38 +00:00
|
|
|
return API.post(DatasourcesApi.url, datasourceConfig);
|
|
|
|
|
}
|
2020-04-28 06:52:53 +00:00
|
|
|
|
2024-06-29 08:57:36 +00:00
|
|
|
static cleanAuthenticationObject(authentication: any): any {
|
|
|
|
|
if (!authentication) {
|
|
|
|
|
return undefined;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const clean: any = {
|
|
|
|
|
authenticationType: authentication.authenticationType ?? "dbAuth",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
switch (clean.authenticationType) {
|
|
|
|
|
case "dbAuth":
|
|
|
|
|
clean.authType = authentication.authType;
|
|
|
|
|
clean.username = authentication.username;
|
|
|
|
|
clean.password = authentication.password;
|
|
|
|
|
clean.databaseName = authentication.databaseName;
|
|
|
|
|
break;
|
|
|
|
|
case "oAuth2":
|
|
|
|
|
clean.grantType = authentication.grantType;
|
|
|
|
|
clean.isTokenHeader = authentication.isTokenHeader;
|
|
|
|
|
clean.isAuthorizationHeader = authentication.isAuthorizationHeader;
|
|
|
|
|
clean.clientId = authentication.clientId;
|
|
|
|
|
clean.clientSecret = authentication.clientSecret;
|
|
|
|
|
clean.authorizationUrl = authentication.authorizationUrl;
|
|
|
|
|
clean.expiresIn = authentication.expiresIn;
|
|
|
|
|
clean.accessTokenUrl = authentication.accessTokenUrl;
|
|
|
|
|
clean.scopeString = authentication.scopeString;
|
|
|
|
|
clean.scope = authentication.scope;
|
|
|
|
|
clean.sendScopeWithRefreshToken =
|
|
|
|
|
authentication.sendScopeWithRefreshToken;
|
|
|
|
|
clean.refreshTokenClientCredentialsLocation =
|
|
|
|
|
authentication.refreshTokenClientCredentialsLocation;
|
|
|
|
|
clean.headerPrefix = authentication.headerPrefix;
|
|
|
|
|
clean.customTokenParameters = authentication.customTokenParameters;
|
|
|
|
|
clean.audience = authentication.audience;
|
|
|
|
|
clean.resource = authentication.resource;
|
|
|
|
|
clean.useSelfSignedCert = authentication.useSelfSignedCert;
|
|
|
|
|
break;
|
|
|
|
|
case "basic":
|
|
|
|
|
clean.username = authentication.username;
|
|
|
|
|
clean.password = authentication.password;
|
|
|
|
|
break;
|
|
|
|
|
case "apiKey":
|
|
|
|
|
clean.addTo = authentication.addTo;
|
|
|
|
|
clean.label = authentication.label;
|
|
|
|
|
clean.headerPrefix = authentication.headerPrefix;
|
|
|
|
|
clean.value = authentication.value;
|
|
|
|
|
break;
|
|
|
|
|
case "bearerToken":
|
|
|
|
|
clean.bearerToken = authentication.bearerToken;
|
|
|
|
|
break;
|
|
|
|
|
case "snowflakeKeyPairAuth":
|
|
|
|
|
clean.username = authentication.username;
|
|
|
|
|
clean.privateKey = authentication.privateKey;
|
|
|
|
|
clean.passphrase = authentication.passphrase;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return clean;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-03 13:06:05 +00:00
|
|
|
// Api to test current environment datasource
|
2023-10-09 13:54:06 +00:00
|
|
|
static async testDatasource(
|
2023-07-03 13:06:05 +00:00
|
|
|
datasourceConfig: Partial<DatasourceStorage>,
|
|
|
|
|
pluginId: string,
|
|
|
|
|
workspaceId: string,
|
|
|
|
|
): Promise<any> {
|
2024-06-24 11:47:23 +00:00
|
|
|
const payload = {
|
|
|
|
|
...datasourceConfig,
|
|
|
|
|
pluginId,
|
|
|
|
|
workspaceId,
|
|
|
|
|
isValid: undefined,
|
|
|
|
|
toastMessage: undefined,
|
|
|
|
|
datasourceConfiguration: datasourceConfig.datasourceConfiguration && {
|
|
|
|
|
...datasourceConfig.datasourceConfiguration,
|
2024-07-01 14:09:14 +00:00
|
|
|
authentication: DatasourcesApi.cleanAuthenticationObject(
|
|
|
|
|
datasourceConfig.datasourceConfiguration.authentication,
|
|
|
|
|
),
|
2024-06-24 11:47:23 +00:00
|
|
|
connection: datasourceConfig.datasourceConfiguration.connection && {
|
|
|
|
|
...datasourceConfig.datasourceConfiguration.connection,
|
|
|
|
|
ssl: {
|
|
|
|
|
...datasourceConfig.datasourceConfiguration.connection.ssl,
|
|
|
|
|
certificateType: undefined,
|
|
|
|
|
},
|
|
|
|
|
},
|
2023-07-03 13:06:05 +00:00
|
|
|
},
|
2024-06-24 11:47:23 +00:00
|
|
|
};
|
|
|
|
|
return API.post(`${DatasourcesApi.url}/test`, payload, undefined, {
|
|
|
|
|
timeout: DEFAULT_TEST_DATA_SOURCE_TIMEOUT_MS,
|
|
|
|
|
});
|
2020-04-28 06:52:53 +00:00
|
|
|
}
|
|
|
|
|
|
2023-07-03 13:06:05 +00:00
|
|
|
// Api to update datasource name.
|
2023-10-09 13:54:06 +00:00
|
|
|
static async updateDatasource(
|
2020-04-28 06:52:53 +00:00
|
|
|
datasourceConfig: Partial<Datasource>,
|
|
|
|
|
id: string,
|
2020-11-03 13:05:40 +00:00
|
|
|
): Promise<any> {
|
2020-04-28 06:52:53 +00:00
|
|
|
return API.put(DatasourcesApi.url + `/${id}`, datasourceConfig);
|
|
|
|
|
}
|
2020-04-29 10:03:56 +00:00
|
|
|
|
2023-07-03 13:06:05 +00:00
|
|
|
// Api to update specific datasource storage/environment configuration
|
2023-10-09 13:54:06 +00:00
|
|
|
static async updateDatasourceStorage(
|
2024-06-24 11:47:23 +00:00
|
|
|
datasourceStorage: Partial<DatasourceStorage>,
|
2023-07-03 13:06:05 +00:00
|
|
|
): Promise<any> {
|
2024-06-24 11:47:23 +00:00
|
|
|
const payload = {
|
|
|
|
|
...datasourceStorage,
|
|
|
|
|
isValid: undefined,
|
|
|
|
|
toastMessage: undefined,
|
|
|
|
|
datasourceConfiguration: datasourceStorage.datasourceConfiguration && {
|
|
|
|
|
...datasourceStorage.datasourceConfiguration,
|
|
|
|
|
connection: datasourceStorage.datasourceConfiguration.connection && {
|
|
|
|
|
...datasourceStorage.datasourceConfiguration.connection,
|
|
|
|
|
ssl: {
|
|
|
|
|
...datasourceStorage.datasourceConfiguration.connection.ssl,
|
|
|
|
|
authTypeControl: undefined,
|
chore: Fail on unknown fields in request body (#33724)
Currently, if the incoming request body contains fields that aren't
recognized by the backend, we just ignore them, and deserialize what we
_can_. This has lead to subtle bugs and wasted a lot of developer time
in the past, and added little value in return.
Most recently, with application creation, now fixed in
https://github.com/appsmithorg/appsmith/pull/33722.
Another one, for action creation, client sends this in `eventData` field
of the request body:

But the class defined for `eventData` is this:

Clearly isn't working.
This PR enabled the `FAIL_ON_UNKNOWN_PROPERTIES` setting only for the
deserialization of HTTP request payloads. It shouldn't have impact on
other deserializations like those for Git, and those that load resource
files. Primarily to limit the scope.
This should also bring in some much-needed type strictness to the client
as well. So far, server has been lax in accepting just any fields in the
incoming request body, so client was able to afford being lax about the
object that was sent up.
We're enabling this restriction only for CE currently. Will be opening a
similar PR on EE and once all tests pass there, we enable for EE as
well.
Depends on #33728 #33730 #33731 #34366 #34405 #34446 #34473 #34506
Run No. 1
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9685619413>
> Commit: 04e225f91a5549bd41f952ea85fa57483b1b0588
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9685619413&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
**/test all**
<!-- This is an auto-generated comment: Cypress test results -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/9690185000>
> Commit: 29da8b48a36772bebc188f6173ea07d6acfd9a3c
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=9690185000&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: ``
<!-- end of auto-generated comment: Cypress test results -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
- **New Features**
- Added `certificateType` property to datasources for enhanced SSL
configuration options.
- **Enhancements**
- Improved JSON deserialization behavior for better data handling and
flexibility.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-06-27 06:16:31 +00:00
|
|
|
certificateType: undefined,
|
2024-06-24 11:47:23 +00:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
return API.put(DatasourcesApi.url + `/datasource-storages`, payload);
|
2023-07-03 13:06:05 +00:00
|
|
|
}
|
|
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async deleteDatasource(id: string): Promise<any> {
|
2020-04-29 10:03:56 +00:00
|
|
|
return API.delete(DatasourcesApi.url + `/${id}`);
|
|
|
|
|
}
|
2020-09-21 09:11:42 +00:00
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async fetchDatasourceStructure(
|
2020-09-29 04:17:25 +00:00
|
|
|
id: string,
|
|
|
|
|
ignoreCache = false,
|
2020-11-03 13:05:40 +00:00
|
|
|
): Promise<any> {
|
2020-09-29 04:17:25 +00:00
|
|
|
return API.get(
|
|
|
|
|
DatasourcesApi.url + `/${id}/structure?ignoreCache=${ignoreCache}`,
|
|
|
|
|
);
|
2020-09-21 09:11:42 +00:00
|
|
|
}
|
2021-07-07 03:46:16 +00:00
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async fetchMockDatasources(): Promise<
|
|
|
|
|
AxiosPromise<ApiResponse<Datasource[]>>
|
|
|
|
|
> {
|
2021-07-07 03:46:16 +00:00
|
|
|
return API.get(DatasourcesApi.url + "/mocks");
|
|
|
|
|
}
|
|
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async addMockDbToDatasources(
|
2021-07-08 05:59:11 +00:00
|
|
|
name: string,
|
2022-06-15 15:37:41 +00:00
|
|
|
workspaceId: string,
|
2021-07-08 05:59:11 +00:00
|
|
|
pluginId: string,
|
2021-07-08 10:33:41 +00:00
|
|
|
packageName: string,
|
2021-07-08 05:59:11 +00:00
|
|
|
): Promise<any> {
|
|
|
|
|
return API.post(DatasourcesApi.url + `/mocks`, {
|
|
|
|
|
name,
|
2022-06-15 15:37:41 +00:00
|
|
|
workspaceId,
|
2021-07-08 05:59:11 +00:00
|
|
|
pluginId,
|
2021-07-08 10:33:41 +00:00
|
|
|
packageName,
|
2021-07-08 05:59:11 +00:00
|
|
|
});
|
2021-07-07 03:46:16 +00:00
|
|
|
}
|
2021-07-29 08:13:10 +00:00
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async executeDatasourceQuery({
|
2021-07-29 08:13:10 +00:00
|
|
|
data,
|
|
|
|
|
datasourceId,
|
|
|
|
|
}: executeDatasourceQueryRequest) {
|
2023-08-30 07:14:14 +00:00
|
|
|
return API.post(
|
|
|
|
|
DatasourcesApi.url + `/${datasourceId}` + `/schema-preview`,
|
2021-07-29 08:13:10 +00:00
|
|
|
data,
|
|
|
|
|
);
|
|
|
|
|
}
|
feat: Simplified Google Sheets queries (#14869)
* Client changes 1
* add DSL functionality
* Temp commit for refactoring changes
* Do I even know what I'm doing here?
* chore: Second GS layout
* Update: Visibility conditional outputs for schemas
- Added the output from conditional outputs for schema children too
* Update: Entity selector visibility control
- Added logic for controlling visibility of sub components via the JS expressions system
* Update: Passing disabled prop to toggle button
* Update: Passing disabled prop to toggle btn
* Update: Styled component for toggle button
- Added disabled styles based on the disabled prop sent to the toggle form view JSON button
* Update: configProperty role in Entity Selector
- Removed dependance of the configProperty of the entity selector children to it's parent component
* Update: type of placeholder key
- Made placeholder key from form config JSON to accept either string or an object
- Earlier only string was accepted
- This is for pagination component
* Update: Added placeholder control for pagination
* Client changes 1
* add DSL functionality
* Do I even know what I'm doing here?
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* temp triggers
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395)
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* fix: updated tooltip ui, where condition placement, sort by ui
* temp form data access logic
* fix: updated sorting type width ui
* fix: updated ui for spacing, width and text issues
* Update: Type for tooltip of UQI forms
- Added option to send an object to the tooltipText object.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: tooltip for pagination component
- Added handling to parse the tooltip for multiple components.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: Type cast for tooltip component
- Made the content passed to tooltip component as a string only
* Update: Fixed tooltip component CSS
* Update: Dropdown option component
- Added a tooltip wrapper to each option
- This is to show on hover text like disabled state
* fix: updated ẇhere clause broken ui for condition
* Add: functions to check and extract expressions
- Loop through the formConfig and find any keys that have a value that is bindable
- Used pre defined regex to check if value is a moustache binding
* Add: Types for evaluated form configs
- Added types for the form configs to be evaluated and their output post eval
* Add: Flow to run the form config
- Run the form config and update the result to the redux state
* Update: Name of the type for formconfigs
- Updated since it was clashing with a component of the same name
* Add: Function to enforce config type checks
- This is done so that the improper configs can be weeded out and the rest of the form can be shown
* Add: Function to update evaluated config
- Added option to update the config if it's values needed evaluation
* Add: Type check for schema sections
* Update: Error handling for invalid control type
- We were throwing an exception till now, changed it to a warning text
* Add: Exposed tooltip for dropdown option disabled state
* Update: switch to json mode functionality
- Added logic to convert data to a string rather than an object when the first switch to JSON mode happens
* Update: Added key to tooltip for dropdown options
* Trigger API modification
* Add: function to fetch default trigger URL
* Update: Made URL optional in dynamic trigger config
* Update: Dynamic trigger API call
- Made the API call for dynamic triggers have URL as optional field
- Added type check to the response of the API call
* Update: resp type for trigger APIs
* Update: Moved code to utils folder
- Moved functions for UQI form eval processing to utils file
* Update: passing original controltype to JS switch
* Update: config for JSON editor mode
- Updated the config to have different options for JSON mode depending on the original control type
* Update: Connected line numbers flag to config
* Revert: CSS changes for tooltip
* Refactor: Removed consle
* Add: type for the config of dynamic values
* Add: Feature to evaluate config for triggers
* Refactor: fix type check errors
* fix: dropdown ui width with text alignment
* Update: fixed selector for dynamic values
* Update: selector call for fetchDynamicValues
* Add table header index prop for columns selector
* migration partial commit
* migration partial commit
* Refactor: removed unused import
* Update: reused function for checking dynamic value
* Update: removed unused import
* Fix format JSON issues
* Retrieve binding paths from entity selector components
* Fixes 6 remaining issues with UQI implementation
* Fix dropdown issues
* Fix dropdown height issues and fixes triggering of APIs when option is deselected
* Migration changes
* Fix QA generated UQI issues
* Fix projection component height and route change logic
* Fix multi select dropdown placeholder text issue and json stringify issue with switching view types
* Reset entity type value when command value changes
* Test changes
* Review comments
* Moved migrations around
* Corrected import statement
* Added JSON schema migration
* Updated schema version
* perf improvements and filter dropdown options feature
* Fix Code mirror component config for toggleComponentToJson input fields.
* Fix prettier issues
* fix prettier issues
* Fix style issues as a result of the merged conflicts
* Fix failing test case
* Fixed a few other flows (#14225)
* Fixed a few other flows
* Review comments
* Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues.
* More fixes (#14367)
* Factor in the root formconfig parent key.
* Fix flickering issues, and evaluatedFormConfig issues
* fix: Teeny bugs (#14455)
* Teeny bugs
* Added previous functionality as is
* Improvements in the way we fetch dynamic values
* Fix stringiification issue and cyclic dependency issues
* Resolve projection component values deletion
* Resolve merge conflicts and fix prettier issues
* fix: Tsc issues
* Fix property pane connection navigation
* updating ee locator
* updating inputfield locator
* dropdown locator update
* Merge conflict not properly resolved.
* Fix s3 spec
* Fix Mongo Spec
* Fix some more tests
* fix: prevent cyclic dependency when switching to js mode (#14668)
* add delete events for change from array to string in diff
* add test to assert absence of cyclic dependency error when switching to js in switchgroup widget
* Assert that evaluation is not disabled when no cyclic dependency happens
* Cypress test preparations for google sheets and form controls
* Fixed a few test errors (#14874)
* Add: unit tests for uqi UI updates
- view type tests
- conditional output extraction
- processing conditional output to handle view/enabled state of the component
* Add: completed isValidFormConfig test
* Update: improved tests for update config
- These tests cover the functionality to update a section config after it's components are done evaluating
* Fix failing cypress tests and cyclic dependency issue
* Fixes some more tests
* Fixed migration of row objects (#14896)
* Bumped the version of design system package
* Update: reverted change to EE selector
* Fix deletion pointer
* Update: selector for js on load spec
- Synced with changes related to ADS dropdown
* Fix mongoDBShoppingCart spec
* Remove comments
* Fix: mongo shopping cart test failures
* fix: mongo shopping cart spec
* Dummy push to retrigger vercel
* fix: mongo shopping cart spec
* Update MongoDBShoppingCart_spec.js
* fix: removed unused click away
* dummy commit
* Update: moved helper functions to separate file
* Add: added tests for saga functions
- Worked on testing for
- extractFetchDynamicValueFormConfigs
- extractQueueOfValuesToBeFetched
* Add if check for queueOfValuesToBeFetched
* Resolve review comments
* Empty-Commit
Co-authored-by: Irongade <adeoluayangade@yahoo.com>
Co-authored-by: Ayush Pahwa <ayush@appsmith.com>
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
|
|
|
|
2023-10-09 13:54:06 +00:00
|
|
|
static async executeGoogleSheetsDatasourceQuery({
|
feat: Simplified Google Sheets queries (#14869)
* Client changes 1
* add DSL functionality
* Temp commit for refactoring changes
* Do I even know what I'm doing here?
* chore: Second GS layout
* Update: Visibility conditional outputs for schemas
- Added the output from conditional outputs for schema children too
* Update: Entity selector visibility control
- Added logic for controlling visibility of sub components via the JS expressions system
* Update: Passing disabled prop to toggle button
* Update: Passing disabled prop to toggle btn
* Update: Styled component for toggle button
- Added disabled styles based on the disabled prop sent to the toggle form view JSON button
* Update: configProperty role in Entity Selector
- Removed dependance of the configProperty of the entity selector children to it's parent component
* Update: type of placeholder key
- Made placeholder key from form config JSON to accept either string or an object
- Earlier only string was accepted
- This is for pagination component
* Update: Added placeholder control for pagination
* Client changes 1
* add DSL functionality
* Do I even know what I'm doing here?
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* temp triggers
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design (#12395)
* fix: updated uqi forms ui, clubbed JS switch button to ads, updated tooltip design
* fix: updated tooltip component for wrong ui on entity explore
* fix: updated tooltip ui, where condition placement, sort by ui
* temp form data access logic
* fix: updated sorting type width ui
* fix: updated ui for spacing, width and text issues
* Update: Type for tooltip of UQI forms
- Added option to send an object to the tooltipText object.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: tooltip for pagination component
- Added handling to parse the tooltip for multiple components.
- This allows for composite components like pagination to have tooltips for each sub component
* Update: Type cast for tooltip component
- Made the content passed to tooltip component as a string only
* Update: Fixed tooltip component CSS
* Update: Dropdown option component
- Added a tooltip wrapper to each option
- This is to show on hover text like disabled state
* fix: updated ẇhere clause broken ui for condition
* Add: functions to check and extract expressions
- Loop through the formConfig and find any keys that have a value that is bindable
- Used pre defined regex to check if value is a moustache binding
* Add: Types for evaluated form configs
- Added types for the form configs to be evaluated and their output post eval
* Add: Flow to run the form config
- Run the form config and update the result to the redux state
* Update: Name of the type for formconfigs
- Updated since it was clashing with a component of the same name
* Add: Function to enforce config type checks
- This is done so that the improper configs can be weeded out and the rest of the form can be shown
* Add: Function to update evaluated config
- Added option to update the config if it's values needed evaluation
* Add: Type check for schema sections
* Update: Error handling for invalid control type
- We were throwing an exception till now, changed it to a warning text
* Add: Exposed tooltip for dropdown option disabled state
* Update: switch to json mode functionality
- Added logic to convert data to a string rather than an object when the first switch to JSON mode happens
* Update: Added key to tooltip for dropdown options
* Trigger API modification
* Add: function to fetch default trigger URL
* Update: Made URL optional in dynamic trigger config
* Update: Dynamic trigger API call
- Made the API call for dynamic triggers have URL as optional field
- Added type check to the response of the API call
* Update: resp type for trigger APIs
* Update: Moved code to utils folder
- Moved functions for UQI form eval processing to utils file
* Update: passing original controltype to JS switch
* Update: config for JSON editor mode
- Updated the config to have different options for JSON mode depending on the original control type
* Update: Connected line numbers flag to config
* Revert: CSS changes for tooltip
* Refactor: Removed consle
* Add: type for the config of dynamic values
* Add: Feature to evaluate config for triggers
* Refactor: fix type check errors
* fix: dropdown ui width with text alignment
* Update: fixed selector for dynamic values
* Update: selector call for fetchDynamicValues
* Add table header index prop for columns selector
* migration partial commit
* migration partial commit
* Refactor: removed unused import
* Update: reused function for checking dynamic value
* Update: removed unused import
* Fix format JSON issues
* Retrieve binding paths from entity selector components
* Fixes 6 remaining issues with UQI implementation
* Fix dropdown issues
* Fix dropdown height issues and fixes triggering of APIs when option is deselected
* Migration changes
* Fix QA generated UQI issues
* Fix projection component height and route change logic
* Fix multi select dropdown placeholder text issue and json stringify issue with switching view types
* Reset entity type value when command value changes
* Test changes
* Review comments
* Moved migrations around
* Corrected import statement
* Added JSON schema migration
* Updated schema version
* perf improvements and filter dropdown options feature
* Fix Code mirror component config for toggleComponentToJson input fields.
* Fix prettier issues
* fix prettier issues
* Fix style issues as a result of the merged conflicts
* Fix failing test case
* Fixed a few other flows (#14225)
* Fixed a few other flows
* Review comments
* Fix generate CRUD, fix evaluation of dynamic bindings and fix various styling issues.
* More fixes (#14367)
* Factor in the root formconfig parent key.
* Fix flickering issues, and evaluatedFormConfig issues
* fix: Teeny bugs (#14455)
* Teeny bugs
* Added previous functionality as is
* Improvements in the way we fetch dynamic values
* Fix stringiification issue and cyclic dependency issues
* Resolve projection component values deletion
* Resolve merge conflicts and fix prettier issues
* fix: Tsc issues
* Fix property pane connection navigation
* updating ee locator
* updating inputfield locator
* dropdown locator update
* Merge conflict not properly resolved.
* Fix s3 spec
* Fix Mongo Spec
* Fix some more tests
* fix: prevent cyclic dependency when switching to js mode (#14668)
* add delete events for change from array to string in diff
* add test to assert absence of cyclic dependency error when switching to js in switchgroup widget
* Assert that evaluation is not disabled when no cyclic dependency happens
* Cypress test preparations for google sheets and form controls
* Fixed a few test errors (#14874)
* Add: unit tests for uqi UI updates
- view type tests
- conditional output extraction
- processing conditional output to handle view/enabled state of the component
* Add: completed isValidFormConfig test
* Update: improved tests for update config
- These tests cover the functionality to update a section config after it's components are done evaluating
* Fix failing cypress tests and cyclic dependency issue
* Fixes some more tests
* Fixed migration of row objects (#14896)
* Bumped the version of design system package
* Update: reverted change to EE selector
* Fix deletion pointer
* Update: selector for js on load spec
- Synced with changes related to ADS dropdown
* Fix mongoDBShoppingCart spec
* Remove comments
* Fix: mongo shopping cart test failures
* fix: mongo shopping cart spec
* Dummy push to retrigger vercel
* fix: mongo shopping cart spec
* Update MongoDBShoppingCart_spec.js
* fix: removed unused click away
* dummy commit
* Update: moved helper functions to separate file
* Add: added tests for saga functions
- Worked on testing for
- extractFetchDynamicValueFormConfigs
- extractQueueOfValuesToBeFetched
* Add if check for queueOfValuesToBeFetched
* Resolve review comments
* Empty-Commit
Co-authored-by: Irongade <adeoluayangade@yahoo.com>
Co-authored-by: Ayush Pahwa <ayush@appsmith.com>
Co-authored-by: Aman Agarwal <aman@appsmith.com>
Co-authored-by: Ayangade Adeoluwa <37867493+Irongade@users.noreply.github.com>
Co-authored-by: Aishwarya UR <aishwarya@appsmith.com>
Co-authored-by: Favour Ohanekwu <fohanekwu@gmail.com>
Co-authored-by: Albin <albin@appsmith.com>
2022-07-04 05:43:27 +00:00
|
|
|
data,
|
|
|
|
|
datasourceId,
|
|
|
|
|
}: executeDatasourceQueryRequest) {
|
|
|
|
|
return API.post(DatasourcesApi.url + `/${datasourceId}` + `/trigger`, data);
|
|
|
|
|
}
|
2019-11-07 09:32:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default DatasourcesApi;
|