## Description 1. Improve string pattern used to determine whether to show onReady function missing warning 2. Remove stale keys from dynamicTriggerPathList when user changes the event names 3. Clean up events when a custom widget unselected in editor Fixes https://github.com/appsmithorg/appsmith/issues/31682 Fixes https://github.com/appsmithorg/appsmith/issues/30276 Fixes https://github.com/appsmithorg/appsmith/issues/30204 ## Automation /ok-to-test tags="@tag.All" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!IMPORTANT] > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/8337490694> > Commit: `4fcb4cab6960c9a4a459a2b97261a112363901e2` > Cypress dashboard url: <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=8337490694&attempt=1" target="_blank">Click here!</a> > All cypress tests have passed 🎉🎉🎉 <!-- end of auto-generated comment: Cypress test results --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new route for `CustomWidgetBuilderLoader` component, enhancing navigation and accessibility. - Enhanced the Custom Widget Builder with improved event handling and dynamic trigger path support. - Added a new styled `Container` for the Custom Widget component for better layout management. - **Refactor** - Improved configuration settings readability and consistency for New Relic integration. - Refactored `CustomWidgetBuilderService` for clearer modularity and enhanced message handling. - Optimized property editing and update logic within the Property Pane of the Editor. - **Bug Fixes** - Adjusted connection timeout in the Custom Widget Builder for a more responsive user experience. - Updated button sizes in the ConfirmationModal for consistency. - **Tests** - Added comprehensive test cases for `CustomWidgetBuilderService` and `Builder` classes. - **Chores** - Removed deprecated `UPDATE_SRCDOC_ACK` event, streamlining Custom Widget Builder events. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
127 lines
5.2 KiB
JavaScript
127 lines
5.2 KiB
JavaScript
function parseConfig() {
|
||
return "";
|
||
}
|
||
const LOG_LEVELS = ["debug", "error"];
|
||
const CONFIG_LOG_LEVEL_INDEX = 1;
|
||
|
||
module.exports = {
|
||
setupFiles: ["jest-canvas-mock"],
|
||
roots: ["<rootDir>/src"],
|
||
transform: {
|
||
"^.+\\.(png|js|ts|tsx)$": "ts-jest",
|
||
},
|
||
testEnvironment: "jsdom",
|
||
testTimeout: 9000,
|
||
setupFilesAfterEnv: ["<rootDir>/test/setup.ts"],
|
||
testRegex: "(/__tests__/.*|(\\.|/)(test|spec))\\.(tsx|ts|js)?$",
|
||
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node", "css"],
|
||
moduleDirectories: ["node_modules", "src", "test"],
|
||
transformIgnorePatterns: [
|
||
"<rootDir>/node_modules/(?!codemirror|konva|design-system|design-system-old|react-dnd|dnd-core|@babel|(@blueprintjs)|@github|lodash-es|@draft-js-plugins|react-documents|linkedom|assert-never|axios)",
|
||
],
|
||
moduleNameMapper: {
|
||
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js",
|
||
"\\.svg$": "<rootDir>/test/__mocks__/svgMock.js",
|
||
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|txt)$":
|
||
"<rootDir>/test/__mocks__/fileMock.js",
|
||
"^worker-loader!": "<rootDir>/test/__mocks__/workerMock.js",
|
||
"^!!raw-loader!": "<rootDir>/test/__mocks__/derivedMock.js",
|
||
"test/(.*)": "<rootDir>/test/$1",
|
||
"@appsmith/(.*)": "<rootDir>/src/ee/$1",
|
||
"design-system-old": "<rootDir>/node_modules/design-system-old/build",
|
||
"@design-system/widgets-old":
|
||
"<rootDir>/node_modules/@design-system/widgets-old",
|
||
"@design-system/widgets": "<rootDir>/node_modules/@design-system/widgets",
|
||
"@design-system/headless": "<rootDir>/node_modules/@design-system/headless",
|
||
"@design-system/theming": "<rootDir>/node_modules/@design-system/theming",
|
||
"design-system": "<rootDir>/node_modules/design-system/build",
|
||
"^proxy-memoize$": "<rootDir>/node_modules/proxy-memoize/dist/wrapper.cjs",
|
||
// @blueprintjs packages need to be resolved to the `esnext` directory. The default `esm` directory
|
||
// contains sources that are transpiled to ES5. As Jest does not transpile our sources to ES5,
|
||
// this results in mixing ES6 and ES5 code and causes errors like:
|
||
// Class constructor GlobalHotKeys cannot be invoked without 'new'
|
||
// Note: this isn’t issue in the live app because we transpile *everything* down to ES5 there.
|
||
"^@blueprintjs/core$":
|
||
"<rootDir>/node_modules/@blueprintjs/core/lib/esnext",
|
||
"^@blueprintjs/datetime$":
|
||
"<rootDir>/node_modules/@blueprintjs/datetime/lib/esnext",
|
||
"^@blueprintjs/icons$":
|
||
"<rootDir>/node_modules/@blueprintjs/icons/lib/esnext",
|
||
"^@blueprintjs/popover2$":
|
||
"<rootDir>/node_modules/@blueprintjs/popover2/lib/esnext",
|
||
"^@blueprintjs/select$":
|
||
"<rootDir>/node_modules/@blueprintjs/select/lib/esnext",
|
||
"design-system": "<rootDir>/node_modules/design-system/build",
|
||
"^canvas$": "jest-canvas-mock",
|
||
},
|
||
globals: {
|
||
"ts-jest": {
|
||
isolatedModules: true,
|
||
diagnostics: {
|
||
ignoreCodes: [1343],
|
||
},
|
||
astTransformers: {
|
||
before: [
|
||
{
|
||
path: "node_modules/ts-jest-mock-import-meta",
|
||
options: { metaObjectReplacement: { url: "https://www.url.com" } },
|
||
},
|
||
],
|
||
},
|
||
},
|
||
APPSMITH_FEATURE_CONFIGS: {
|
||
sentry: {
|
||
dsn: parseConfig("__APPSMITH_SENTRY_DSN__"),
|
||
release: parseConfig("__APPSMITH_SENTRY_RELEASE__"),
|
||
environment: parseConfig("__APPSMITH_SENTRY_ENVIRONMENT__"),
|
||
},
|
||
smartLook: {
|
||
id: parseConfig("__APPSMITH_SMART_LOOK_ID__"),
|
||
},
|
||
segment: {
|
||
apiKey: parseConfig("__APPSMITH_SEGMENT_KEY__"),
|
||
ceKey: parseConfig("__APPSMITH_SEGMENT_CE_KEY__"),
|
||
},
|
||
newRelic: {
|
||
enableNewRelic: parseConfig("__APPSMITH_NEW_RELIC_ACCOUNT_ENABLE__"),
|
||
accountId: parseConfig("__APPSMITH_NEW_RELIC_ACCOUNT_ID__"),
|
||
applicationId: parseConfig("__APPSMITH_NEW_RELIC_APPLICATION_ID__"),
|
||
browserAgentlicenseKey: parseConfig(
|
||
"__APPSMITH_NEW_RELIC_BROWSER_AGENT_LICENSE_KEY__",
|
||
),
|
||
otlpLicenseKey: parseConfig("__APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY__"),
|
||
otlpServiceName: parseConfig(
|
||
"__APPSMITH_NEW_RELIC_OTEL_SERVICE_NAME__",
|
||
),
|
||
otlpEndpoint: parseConfig(
|
||
"__APPSMITH_NEW_RELIC_OTEL_EXPORTER_OTLP_ENDPOINT__",
|
||
),
|
||
},
|
||
fusioncharts: {
|
||
licenseKey: parseConfig("__APPSMITH_FUSIONCHARTS_LICENSE_KEY__"),
|
||
},
|
||
enableMixpanel: parseConfig("__APPSMITH_SEGMENT_KEY__"),
|
||
algolia: {
|
||
apiId: parseConfig("__APPSMITH_ALGOLIA_API_ID__"),
|
||
apiKey: parseConfig("__APPSMITH_ALGOLIA_API_KEY__"),
|
||
indexName: parseConfig("__APPSMITH_ALGOLIA_SEARCH_INDEX_NAME__"),
|
||
},
|
||
logLevel:
|
||
CONFIG_LOG_LEVEL_INDEX > -1
|
||
? LOG_LEVELS[CONFIG_LOG_LEVEL_INDEX]
|
||
: LOG_LEVELS[1],
|
||
cloudHosting: "CLOUD_HOSTING",
|
||
appVersion: {
|
||
id: parseConfig("__APPSMITH_VERSION_ID__"),
|
||
sha: parseConfig("__APPSMITH_VERSION_SHA__"),
|
||
releaseDate: parseConfig("__APPSMITH_VERSION_RELEASE_DATE__"),
|
||
},
|
||
intercomAppID: "APP_ID",
|
||
mailEnabled: parseConfig("__APPSMITH_MAIL_ENABLED__"),
|
||
disableIframeWidgetSandbox: parseConfig(
|
||
"__APPSMITH_DISABLE_IFRAME_WIDGET_SANDBOX__",
|
||
),
|
||
},
|
||
},
|
||
};
|