diff --git a/.github/workflows/client-build.yml b/.github/workflows/client-build.yml index eac42e377b5..a6c040cdad0 100644 --- a/.github/workflows/client-build.yml +++ b/.github/workflows/client-build.yml @@ -81,8 +81,8 @@ jobs: env: ALL_CHANGED_FILES: ${{ steps.changed-files-specific.outputs.all_changed_files }} run: | - echo "One or more files in the server folder has changed." - echo "List all the files that have changed: $ALL_CHANGED_FILES" + echo "One or more files in the server folder has changed." + echo "List all the files that have changed: $ALL_CHANGED_FILES" - name: Check compliance if: inputs.pr != 0 && steps.changed-files-specific.outputs.any_changed == 'true' @@ -166,6 +166,11 @@ jobs: export REACT_APP_SEGMENT_CE_KEY="${{ secrets.APPSMITH_SEGMENT_CE_KEY_RELEASE }}" fi REACT_APP_ENVIRONMENT=${{steps.vars.outputs.REACT_APP_ENVIRONMENT}} \ + REACT_APP_FARO_APP_ID=${{ secrets.REACT_APP_FARO_APP_ID }} \ + REACT_APP_FARO_APP_NAME=${{ secrets.REACT_APP_FARO_APP_NAME }} \ + REACT_APP_FARO_SOURCEMAP_UPLOAD_API_KEY=${{ secrets.REACT_APP_FARO_SOURCEMAP_UPLOAD_API_KEY }} \ + REACT_APP_FARO_SOURCEMAP_UPLOAD_ENDPOINT=${{ secrets.REACT_APP_FARO_SOURCEMAP_UPLOAD_ENDPOINT }} \ + REACT_APP_FARO_STACK_ID=${{ secrets.REACT_APP_FARO_STACK_ID }} \ REACT_APP_FUSIONCHARTS_LICENSE_KEY=${{ secrets.APPSMITH_FUSIONCHARTS_LICENSE_KEY }} \ SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }} \ REACT_APP_VERSION_EDITION="Community" \ diff --git a/app/client/craco.build.config.js b/app/client/craco.build.config.js index 37765b6f363..540c3ea3e43 100644 --- a/app/client/craco.build.config.js +++ b/app/client/craco.build.config.js @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -const SentryWebpackPlugin = require("@sentry/webpack-plugin"); const { merge } = require("webpack-merge"); const common = require("./craco.common.config.js"); const WorkboxPlugin = require("workbox-webpack-plugin"); const CompressionPlugin = require("compression-webpack-plugin"); const { RetryChunkLoadPlugin } = require("webpack-retry-chunk-load-plugin"); +const FaroSourceMapUploaderPlugin = require("@grafana/faro-webpack-plugin"); const path = require("path"); const env = process.env.REACT_APP_ENVIRONMENT; @@ -39,26 +39,20 @@ plugins.push( ); if (env === "PRODUCTION" || env === "STAGING") { - if ( - process.env.SENTRY_AUTH_TOKEN != null && - process.env.SENTRY_AUTH_TOKEN !== "" - ) { - plugins.push( - new SentryWebpackPlugin({ - include: "build", - ignore: ["node_modules", "webpack.config.js"], - release: process.env.REACT_APP_SENTRY_RELEASE, - deploy: { - env: process.env.REACT_APP_SENTRY_ENVIRONMENT, - }, - }), - ); - } else { - console.log( - "Sentry configuration missing in process environment. Sentry will be disabled.", - ); - } + plugins.push( + new FaroSourceMapUploaderPlugin({ + appId: process.env.REACT_APP_FARO_APP_ID, + appName: process.env.REACT_APP_FARO_APP_NAME, + endpoint: process.env.REACT_APP_FARO_SOURCEMAP_UPLOAD_ENDPOINT, + stackId: process.env.REACT_APP_FARO_STACK_ID, + // instructions on how to obtain your API key are in the documentation + // https://grafana.com/docs/grafana-cloud/monitor-applications/frontend-observability/sourcemap-upload-plugins/#obtain-an-api-key + apiKey: process.env.REACT_APP_FARO_SOURCEMAP_UPLOAD_API_KEY, + gzipContents: true, + }), + ); } + plugins.push(new CompressionPlugin()); plugins.push( diff --git a/app/client/docker/templates/nginx-app.conf.template b/app/client/docker/templates/nginx-app.conf.template index aa71c4314cf..071106c40f4 100644 --- a/app/client/docker/templates/nginx-app.conf.template +++ b/app/client/docker/templates/nginx-app.conf.template @@ -42,15 +42,10 @@ server { sub_filter __APPSMITH_ZIPY_SDK_KEY__ '${APPSMITH_ZIPY_SDK_KEY}'; sub_filter __APPSMITH_HIDE_WATERMARK__ '${APPSMITH_HIDE_WATERMARK}'; sub_filter __APPSMITH_DISABLE_IFRAME_WIDGET_SANDBOX__ '${APPSMITH_DISABLE_IFRAME_WIDGET_SANDBOX}'; - sub_filter __APPSMITH_NEW_RELIC_ACCOUNT_ID__ '${APPSMITH_NEW_RELIC_ACCOUNT_ID}'; - sub_filter __APPSMITH_NEW_RELIC_APPLICATION_ID__ '${APPSMITH_NEW_RELIC_APPLICATION_ID}'; - sub_filter __APPSMITH_NEW_RELIC_BROWSER_AGENT_LICENSE_KEY__ '${APPSMITH_NEW_RELIC_BROWSER_AGENT_LICENSE_KEY}'; - sub_filter __APPSMITH_NEW_RELIC_BROWSER_AGENT_ENDPOINT__ '${APPSMITH_NEW_RELIC_BROWSER_AGENT_ENDPOINT}'; - sub_filter __APPSMITH_NEW_RELIC_ACCOUNT_ENABLE__ '${APPSMITH_NEW_RELIC_ACCOUNT_ENABLE}'; + sub_filter __APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY__ '${APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY}'; - sub_filter __APPSMITH_NEW_RELIC_OTEL_SERVICE_NAME__ '${APPSMITH_NEW_RELIC_OTEL_SERVICE_NAME}'; sub_filter __APPSMITH_NEW_RELIC_OTEL_EXPORTER_OTLP_ENDPOINT__ '${APPSMITH_NEW_RELIC_OTEL_EXPORTER_OTLP_ENDPOINT}'; - + sub_filter __APPSMITH_FRONTEND_TRACING_URL__ '${APPSMITH_FRONTEND_TRACING_URL}'; } diff --git a/app/client/jest.config.js b/app/client/jest.config.js index 76534b07649..15d659a9ad9 100644 --- a/app/client/jest.config.js +++ b/app/client/jest.config.js @@ -86,27 +86,10 @@ module.exports = { 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__", - ), - browserAgentEndpoint: parseConfig( - "__APPSMITH_NEW_RELIC_BROWSER_AGENT_ENDPOINT__", - ), - 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__", - ), - }, observability: { deploymentName: "jest-run", serviceInstanceId: "appsmith-0", + tracingUrl: "", }, fusioncharts: { licenseKey: parseConfig("__APPSMITH_FUSIONCHARTS_LICENSE_KEY__"), diff --git a/app/client/knip.json b/app/client/knip.json index c371f805aba..a9ff0c18ae8 100644 --- a/app/client/knip.json +++ b/app/client/knip.json @@ -35,7 +35,6 @@ "postcss-url", "@types/dom-view-transitions", "@types/jest", - "@sentry/webpack-plugin", "compression-webpack-plugin", "webpack-retry-chunk-load-plugin", "lint-staged", @@ -47,6 +46,7 @@ "@aws-sdk/lib-storage", "@octokit/rest", "@faker-js/faker", + "@grafana/faro-webpack-plugin", "pg", "factory.ts" ] diff --git a/app/client/package.json b/app/client/package.json index 7330ec7e966..8a365d4286b 100644 --- a/app/client/package.json +++ b/app/client/package.json @@ -68,21 +68,19 @@ "@github/g-emoji-element": "^1.1.5", "@googlemaps/markerclusterer": "^2.0.14", "@googlemaps/react-wrapper": "^1.1.35", + "@grafana/faro-react": "^1.12.2", + "@grafana/faro-web-tracing": "^1.12.2", "@manaflair/redux-batch": "^1.0.0", "@mantine/hooks": "^5.10.1", - "@newrelic/browser-agent": "^1.255.0", "@opentelemetry/api": "^1.9.0", - "@opentelemetry/auto-instrumentations-web": "^0.42.0", - "@opentelemetry/context-zone": "^1.27.0", - "@opentelemetry/core": "^1.27.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.54.2", - "@opentelemetry/exporter-trace-otlp-http": "^0.54.2", - "@opentelemetry/instrumentation": "^0.54.2", - "@opentelemetry/resources": "^1.27.0", - "@opentelemetry/sdk-metrics": "^1.27.0", - "@opentelemetry/sdk-trace-base": "^1.27.0", - "@opentelemetry/sdk-trace-web": "^1.27.0", - "@opentelemetry/semantic-conventions": "^1.27.0", + "@opentelemetry/context-zone": "^1.30.0", + "@opentelemetry/core": "^1.30.0", + "@opentelemetry/exporter-trace-otlp-http": "^0.57.0", + "@opentelemetry/instrumentation": "^0.57.0", + "@opentelemetry/resources": "^1.30.0", + "@opentelemetry/sdk-trace-base": "^1.30.0", + "@opentelemetry/sdk-trace-web": "^1.30.0", + "@opentelemetry/semantic-conventions": "^1.28.0", "@react-spring/web": "^9.7.4", "@react-types/shared": "^3.23.0", "@redux-saga/core": "1.1.3", @@ -251,9 +249,9 @@ "@craco/craco": "^7.0.0", "@cypress/grep": "^4.0.1", "@faker-js/faker": "^7.4.0", + "@grafana/faro-webpack-plugin": "^0.1.1", "@octokit/rest": "^20.0.1", "@peculiar/webcrypto": "^1.4.3", - "@sentry/webpack-plugin": "^1.18.9", "@simonsmith/cypress-image-snapshot": "^9.1.0", "@testing-library/jest-dom": "5.16.1", "@testing-library/react": "12.1.2", diff --git a/app/client/public/index.html b/app/client/public/index.html index dc9ca3ddc49..3b792978b95 100755 --- a/app/client/public/index.html +++ b/app/client/public/index.html @@ -213,20 +213,9 @@ ceKey: parseConfig('{{env "APPSMITH_SEGMENT_CE_KEY"}}'), }, observability: { - deploymentName: parseConfig('{{env "APPSMITH_DEPLOYMENT_NAME"}}') || "self-hosted", - serviceInstanceId: parseConfig('{{env "HOSTNAME"}}') || "appsmith-0", - }, - newRelic:{ - enableNewRelic: parseConfig('{{env "APPSMITH_NEW_RELIC_ACCOUNT_ENABLE"}}'), - accountId: parseConfig('{{env "APPSMITH_NEW_RELIC_ACCOUNT_ID"}}'), - applicationId: parseConfig('{{env "APPSMITH_NEW_RELIC_APPLICATION_ID"}}'), - browserAgentlicenseKey: parseConfig('{{env "APPSMITH_NEW_RELIC_BROWSER_AGENT_LICENSE_KEY"}}'), - browserAgentEndpoint: parseConfig('{{env "APPSMITH_NEW_RELIC_BROWSER_AGENT_ENDPOINT"}}'), - otlpLicenseKey: parseConfig('{{env "APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY"}}'), - //OTLP following the naming convention of Sdk initialisation - otlpServiceName: parseConfig('{{env "APPSMITH_NEW_RELIC_OTEL_SERVICE_NAME"}}'), - otlpEndpoint:parseConfig('{{env "APPSMITH_NEW_RELIC_OTEL_EXPORTER_OTLP_ENDPOINT"}}'), - + deploymentName: parseConfig('{{env "APPSMITH_DEPLOYMENT_NAME"}}'), + serviceInstanceId: parseConfig('{{env "APPSMITH_HOSTNAME"}}'), + tracingUrl: parseConfig('{{env "APPSMITH_FRONTEND_TRACING_URL"}}'), }, fusioncharts: { licenseKey: parseConfig('{{env "APPSMITH_FUSIONCHARTS_LICENSE_KEY"}}'), diff --git a/app/client/src/UITelemetry/auto-otel-web.ts b/app/client/src/UITelemetry/auto-otel-web.ts deleted file mode 100644 index 31305790499..00000000000 --- a/app/client/src/UITelemetry/auto-otel-web.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base"; -import { WebTracerProvider } from "@opentelemetry/sdk-trace-web"; -import { ZoneContextManager } from "@opentelemetry/context-zone"; -import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http"; -import { Resource } from "@opentelemetry/resources"; -import { - ATTR_DEPLOYMENT_NAME, - ATTR_SERVICE_INSTANCE_ID, -} from "@opentelemetry/semantic-conventions/incubating"; -import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; -import { getAppsmithConfigs } from "ee/configs"; -import { registerInstrumentations } from "@opentelemetry/instrumentation"; -import { PageLoadInstrumentation } from "./PageLoadInstrumentation"; -import { getWebAutoInstrumentations } from "@opentelemetry/auto-instrumentations-web"; - -enum CompressionAlgorithm { - NONE = "none", - GZIP = "gzip", -} -const { newRelic, observability } = getAppsmithConfigs(); -const { browserAgentEndpoint, otlpLicenseKey } = newRelic; - -const { deploymentName, serviceInstanceId, serviceName } = observability; - -// This base domain is used to filter out the Smartlook requests from the browser agent -// There are some requests made to subdomains of smartlook.cloud which will also be filtered out -const smartlookBaseDomain = "smartlook.cloud"; - -const tracerProvider = new WebTracerProvider({ - resource: new Resource({ - [ATTR_DEPLOYMENT_NAME]: deploymentName, - [ATTR_SERVICE_INSTANCE_ID]: serviceInstanceId, - [ATTR_SERVICE_NAME]: serviceName, - }), -}); - -const nrTracesExporter = new OTLPTraceExporter({ - url: getAbsoluteUrl("/monitoring/traces"), - compression: CompressionAlgorithm.GZIP, - headers: { - "api-key": otlpLicenseKey, - }, -}); - -const processor = new BatchSpanProcessor( - nrTracesExporter, - //Optional BatchSpanProcessor Configurations - { - // The maximum queue size. After the size is reached spans are dropped. - maxQueueSize: 100, - // The maximum batch size of every export. It must be smaller or equal to maxQueueSize. - maxExportBatchSize: 50, - // The interval between two consecutive exports - scheduledDelayMillis: 500, - // How long the export can run before it is cancelled - exportTimeoutMillis: 30000, - }, -); - -tracerProvider.addSpanProcessor(processor); -tracerProvider.register({ - contextManager: new ZoneContextManager(), -}); - -registerInstrumentations({ - tracerProvider, - instrumentations: [ - new PageLoadInstrumentation({ - ignoreResourceUrls: [ - browserAgentEndpoint, - getAbsoluteUrl("/monitoring/traces"), - smartlookBaseDomain, - ], - }), - getWebAutoInstrumentations({ - "@opentelemetry/instrumentation-xml-http-request": { - enabled: true, - }, - }), - ], -}); - -/** - * This function adds the given path to the current origin and returns the absolute URL. - * @param path The path to be added to the current origin. - * @returns The absolute URL. - */ -function getAbsoluteUrl(path: string) { - return new URL(path, window.location.origin).toString(); -} diff --git a/app/client/src/UITelemetry/generateTraces.ts b/app/client/src/UITelemetry/generateTraces.ts deleted file mode 100644 index ec1941e09e4..00000000000 --- a/app/client/src/UITelemetry/generateTraces.ts +++ /dev/null @@ -1,146 +0,0 @@ -import type { - Span, - Attributes, - TimeInput, - SpanOptions, -} from "@opentelemetry/api"; -import { SpanKind } from "@opentelemetry/api"; -import { context } from "@opentelemetry/api"; -import { trace } from "@opentelemetry/api"; -import { - deviceType, - browserName, - browserVersion, - osName, - osVersion, -} from "react-device-detect"; -import nanoid from "nanoid"; -import memoizeOne from "memoize-one"; -import { getApplicationParamsFromUrl } from "ee/utils/serviceWorkerUtils"; - -const GENERATOR_TRACE = "generator-tracer"; - -export type OtlpSpan = Span; -export type SpanAttributes = Attributes; - -const OTLP_SESSION_ID = nanoid(); - -const getAppParams = memoizeOne( - (origin: string, pathname: string, search: string) => { - const applicationParams = getApplicationParamsFromUrl({ - origin, - pathname, - search, - }); - - const { - applicationSlug, - appMode = "", - basePageId: pageId, - branchName, - } = applicationParams || {}; - - return { - appMode, - pageId, - branchName, - applicationSlug, - }; - }, -); - -export const getCommonTelemetryAttributes = () => { - const { origin, pathname, search } = window.location; - const appParams = getAppParams(origin, pathname, search); - - return { - ...appParams, - deviceType, - browserName, - browserVersion, - otlpSessionId: OTLP_SESSION_ID, - hostname: window.location.hostname, - osName, - osVersion, - }; -}; - -export function startRootSpan( - spanName: string, - spanAttributes: SpanAttributes = {}, - startTime?: TimeInput, -) { - const tracer = trace.getTracer(GENERATOR_TRACE); - const commonAttributes = getCommonTelemetryAttributes(); - - return tracer.startSpan(spanName, { - kind: SpanKind.CLIENT, - attributes: { - ...commonAttributes, - ...spanAttributes, - }, - startTime, - }); -} -export const generateContext = (span: Span) => { - return trace.setSpan(context.active(), span); -}; -export function startNestedSpan( - spanName: string, - parentSpan: Span, - spanAttributes: SpanAttributes = {}, - startTime?: TimeInput, -) { - const parentContext = generateContext(parentSpan); - - const generatorTrace = trace.getTracer(GENERATOR_TRACE); - const commonAttributes = getCommonTelemetryAttributes(); - - const spanOptions: SpanOptions = { - kind: SpanKind.CLIENT, - attributes: { - ...commonAttributes, - ...spanAttributes, - }, - startTime, - }; - - return generatorTrace.startSpan(spanName, spanOptions, parentContext); -} - -export function endSpan(span?: Span) { - span?.end(); -} - -export function setAttributesToSpan( - span?: Span, - spanAttributes: SpanAttributes = {}, -) { - span?.setAttributes(spanAttributes); -} - -export const startAndEndSpanForFn = ( - spanName: string, - spanAttributes: SpanAttributes = {}, - fn: () => T, -) => { - const span = startRootSpan(spanName, spanAttributes); - const res: T = fn(); - - span.end(); - - return res; -}; - -export function startAndEndSpan( - spanName: string, - startTime: number, - difference: number, - spanAttributes: SpanAttributes = {}, -) { - const endTime = startTime + Math.floor(difference); - - const span = startRootSpan(spanName, spanAttributes, startTime); - - span.end(endTime); -} diff --git a/app/client/src/actions/pluginActionActions.ts b/app/client/src/actions/pluginActionActions.ts index 461a29d5172..6872bd42f7b 100644 --- a/app/client/src/actions/pluginActionActions.ts +++ b/app/client/src/actions/pluginActionActions.ts @@ -16,12 +16,12 @@ import { ActionExecutionContext } from "entities/Action"; import { batchAction } from "actions/batchActions"; import type { ExecuteErrorPayload } from "constants/AppsmithActionConstants/ActionConstants"; import type { ModalInfo } from "reducers/uiReducers/modalActionReducer"; -import type { OtlpSpan } from "UITelemetry/generateTraces"; import type { ApiResponse } from "api/ApiResponses"; import type { JSCollection } from "entities/JSCollection"; import type { ErrorActionPayload } from "sagas/ErrorSagas"; import type { EventLocation } from "ee/utils/analyticsUtilTypes"; import type { GenerateDestinationIdInfoReturnType } from "ee/sagas/helpers"; +import type { Span } from "instrumentation/types"; export const createActionRequest = (payload: Partial) => { return { @@ -397,11 +397,11 @@ type actionDataPayload = { export interface updateActionDataPayloadType { actionDataPayload: actionDataPayload; - parentSpan?: OtlpSpan; + parentSpan?: Span; } export const updateActionData = ( payload: actionDataPayload, - parentSpan?: OtlpSpan, + parentSpan?: Span, ): { type: string; payload: updateActionDataPayloadType; diff --git a/app/client/src/api/Api.ts b/app/client/src/api/Api.ts index e724fdac183..4623392dc82 100644 --- a/app/client/src/api/Api.ts +++ b/app/client/src/api/Api.ts @@ -7,7 +7,7 @@ import { } from "./interceptors"; import { REQUEST_TIMEOUT_MS } from "ee/constants/ApiConstants"; import { convertObjectToQueryParams } from "utils/URLUtils"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { startAndEndSpanForFn } from "instrumentation/generateTraces"; export const apiRequestConfig = { baseURL: "/api/", diff --git a/app/client/src/ce/configs/index.ts b/app/client/src/ce/configs/index.ts index ce15b1a0761..9438f76d26b 100644 --- a/app/client/src/ce/configs/index.ts +++ b/app/client/src/ce/configs/index.ts @@ -16,15 +16,7 @@ export interface INJECTED_CONFIGS { observability: { deploymentName: string; serviceInstanceId: string; - }; - newRelic: { - enableNewRelic: boolean; - accountId: string; - applicationId: string; - browserAgentlicenseKey: string; - browserAgentEndpoint: string; - otlpLicenseKey: string; - otlpEndpoint: string; + tracingUrl: string; }; fusioncharts: { licenseKey: string; @@ -83,19 +75,9 @@ export const getConfigsFromEnvVars = (): INJECTED_CONFIGS => { apiKey: process.env.REACT_APP_MIXPANEL_KEY || "", }, observability: { - deploymentName: process.env.APPSMITH_DEPLOYMENT_NAME || "self-hosted", - serviceInstanceId: process.env.HOSTNAME || "appsmith-0", - }, - newRelic: { - enableNewRelic: !!process.env.APPSMITH_NEW_RELIC_ACCOUNT_ENABLE, - accountId: process.env.APPSMITH_NEW_RELIC_ACCOUNT_ID || "", - applicationId: process.env.APPSMITH_NEW_RELIC_APPLICATION_ID || "", - browserAgentlicenseKey: - process.env.APPSMITH_NEW_RELIC_BROWSER_AGENT_LICENSE_KEY || "", - browserAgentEndpoint: - process.env.APPSMITH_NEW_RELIC_BROWSER_AGENT_ENDPOINT || "", - otlpLicenseKey: process.env.APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY || "", - otlpEndpoint: process.env.APPSMITH_NEW_RELIC_OTEL_SERVICE_NAME || "", + deploymentName: "self-hosted", + serviceInstanceId: "appsmith-0", + tracingUrl: "", }, logLevel: (process.env.REACT_APP_CLIENT_LOG_LEVEL as @@ -141,7 +123,6 @@ export const getAppsmithConfigs = (): AppsmithUIConfigs => { // This code might be called both from the main thread and a web worker typeof window === "undefined" ? undefined : window.APPSMITH_FEATURE_CONFIGS; const ENV_CONFIG = getConfigsFromEnvVars(); - // const sentry = getConfig(ENV_CONFIG.sentry, APPSMITH_FEATURE_CONFIGS.sentry); const sentryDSN = getConfig( ENV_CONFIG.sentry.dsn, APPSMITH_FEATURE_CONFIGS?.sentry.dsn, @@ -170,29 +151,9 @@ export const getAppsmithConfigs = (): AppsmithUIConfigs => { ENV_CONFIG.observability.serviceInstanceId, APPSMITH_FEATURE_CONFIGS?.observability.serviceInstanceId, ); - const newRelicAccountId = getConfig( - ENV_CONFIG.newRelic.accountId, - APPSMITH_FEATURE_CONFIGS?.newRelic.accountId, - ); - const newRelicApplicationId = getConfig( - ENV_CONFIG.newRelic.applicationId, - APPSMITH_FEATURE_CONFIGS?.newRelic.applicationId, - ); - const newRelicBrowserLicenseKey = getConfig( - ENV_CONFIG.newRelic.browserAgentlicenseKey, - APPSMITH_FEATURE_CONFIGS?.newRelic.browserAgentlicenseKey, - ); - const newRelicBrowserAgentEndpoint = getConfig( - ENV_CONFIG.newRelic.browserAgentEndpoint, - APPSMITH_FEATURE_CONFIGS?.newRelic.browserAgentEndpoint, - ); - const newRelicOtlpLicenseKey = getConfig( - ENV_CONFIG.newRelic.otlpLicenseKey, - APPSMITH_FEATURE_CONFIGS?.newRelic.otlpLicenseKey, - ); - const newRelicOtlpEndpoint = getConfig( - ENV_CONFIG.newRelic.otlpEndpoint, - APPSMITH_FEATURE_CONFIGS?.newRelic.otlpEndpoint, + const observabilityFrontendTracingUrl = getConfig( + ENV_CONFIG.observability.tracingUrl, + APPSMITH_FEATURE_CONFIGS?.observability.tracingUrl, ); const fusioncharts = getConfig( ENV_CONFIG.fusioncharts.licenseKey, @@ -237,22 +198,11 @@ export const getAppsmithConfigs = (): AppsmithUIConfigs => { apiKey: segment.value, ceKey: segmentCEKey.value, }, - newRelic: { - enableNewRelic: - ENV_CONFIG.newRelic.enableNewRelic || - APPSMITH_FEATURE_CONFIGS?.newRelic.enableNewRelic || - false, - accountId: newRelicAccountId.value, - applicationId: newRelicApplicationId.value, - browserAgentlicenseKey: newRelicBrowserLicenseKey.value, - browserAgentEndpoint: newRelicBrowserAgentEndpoint.value, - otlpLicenseKey: newRelicOtlpLicenseKey.value, - otlpEndpoint: newRelicOtlpEndpoint.value, - }, observability: { deploymentName: observabilityDeploymentName.value, serviceInstanceId: observabilityServiceInstanceId.value, serviceName: "appsmith-client", + tracingUrl: observabilityFrontendTracingUrl.value, }, fusioncharts: { enabled: fusioncharts.enabled, diff --git a/app/client/src/ce/configs/types.ts b/app/client/src/ce/configs/types.ts index 3c9a3aa2828..669b100e6c5 100644 --- a/app/client/src/ce/configs/types.ts +++ b/app/client/src/ce/configs/types.ts @@ -24,15 +24,7 @@ export interface AppsmithUIConfigs { deploymentName: string; serviceInstanceId: string; serviceName: string; - }; - newRelic: { - enableNewRelic: boolean; - accountId: string; - applicationId: string; - browserAgentlicenseKey: string; - browserAgentEndpoint: string; - otlpLicenseKey: string; - otlpEndpoint: string; + tracingUrl: string; }; segment: { enabled: boolean; diff --git a/app/client/src/ce/plugins/Linting/utils/getEntityUniqueIdForLogs.ts b/app/client/src/ce/plugins/Linting/utils/getEntityUniqueIdForLogs.ts index 619de80cc86..ec6a3de4789 100644 --- a/app/client/src/ce/plugins/Linting/utils/getEntityUniqueIdForLogs.ts +++ b/app/client/src/ce/plugins/Linting/utils/getEntityUniqueIdForLogs.ts @@ -1,5 +1,5 @@ import type { JSActionEntity, WidgetEntity } from "ee/entities/DataTree/types"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import type { DataTreeEntity } from "entities/DataTree/dataTreeTypes"; const entityUniqueIdGetterMap: Record< diff --git a/app/client/src/ce/workers/Evaluation/evaluationUtils.test.ts b/app/client/src/ce/workers/Evaluation/evaluationUtils.test.ts index 42550cee85b..1c09c47de91 100644 --- a/app/client/src/ce/workers/Evaluation/evaluationUtils.test.ts +++ b/app/client/src/ce/workers/Evaluation/evaluationUtils.test.ts @@ -13,7 +13,7 @@ import type { import { ENTITY_TYPE, EvaluationSubstitutionType, -} from "entities/DataTree/dataTreeFactory"; +} from "ee/entities/DataTree/types"; import type { ConfigTree, DataTreeEntity, diff --git a/app/client/src/ce/workers/Evaluation/getEntityForEvalContextMap.ts b/app/client/src/ce/workers/Evaluation/getEntityForEvalContextMap.ts index bd6da5ad867..65be46a43dc 100644 --- a/app/client/src/ce/workers/Evaluation/getEntityForEvalContextMap.ts +++ b/app/client/src/ce/workers/Evaluation/getEntityForEvalContextMap.ts @@ -1,4 +1,4 @@ -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import type { DataTreeEntity } from "entities/DataTree/dataTreeTypes"; import { getJSActionForEvalContext } from "ee/workers/Evaluation/getJSActionForEvalContext"; diff --git a/app/client/src/ce/workers/common/DependencyMap/utils/getEntityDependenciesByType.ts b/app/client/src/ce/workers/common/DependencyMap/utils/getEntityDependenciesByType.ts index 4275276467b..a8db42564ae 100644 --- a/app/client/src/ce/workers/common/DependencyMap/utils/getEntityDependenciesByType.ts +++ b/app/client/src/ce/workers/common/DependencyMap/utils/getEntityDependenciesByType.ts @@ -3,7 +3,7 @@ import { getEntityNameAndPropertyPath, isATriggerPath, } from "ee/workers/Evaluation/evaluationUtils"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import type { ActionEntity, ActionEntityConfig, diff --git a/app/client/src/ce/workers/common/types.ts b/app/client/src/ce/workers/common/types.ts index 7fdccaa1335..f9e5053effe 100644 --- a/app/client/src/ce/workers/common/types.ts +++ b/app/client/src/ce/workers/common/types.ts @@ -1,5 +1,4 @@ -import type { WebworkerSpanData } from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +import type { WebworkerSpanData, Attributes } from "instrumentation/types"; export enum AppsmithWorkers { LINT_WORKER = "LINT_WORKER", @@ -13,5 +12,5 @@ export enum WorkerErrorTypes { export interface WorkerRequest { method: TActions; data: TData; - webworkerTelemetry: Record; + webworkerTelemetry: Record; } diff --git a/app/client/src/components/formControls/utils.ts b/app/client/src/components/formControls/utils.ts index 1a1d8bfdbc1..234bcf00c2b 100644 --- a/app/client/src/components/formControls/utils.ts +++ b/app/client/src/components/formControls/utils.ts @@ -17,7 +17,6 @@ import { getType, Types } from "utils/TypeHelpers"; import { FIELD_REQUIRED_ERROR, createMessage } from "ee/constants/messages"; import { FEATURE_FLAG } from "ee/entities/FeatureFlag"; import { InputTypes } from "components/constants"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; // This function checks if the form is dirty // We needed this in the cases where datasources are created from APIs and the initial value @@ -722,13 +721,7 @@ export const updateEvaluatedSectionConfig = ( // leaving the commented code as a reminder of the above observation. // const updatedSection = { ...section }; - const updatedSection = startAndEndSpanForFn( - "klona", - { - codeSegment: "utils.updateEvaluatedSectionConfig", - }, - () => klona(section), - ); + const updatedSection = klona(section); let evaluatedConfig: FormConfigEvalObject = {}; diff --git a/app/client/src/entities/DataTree/dataTreeFactory.ts b/app/client/src/entities/DataTree/dataTreeFactory.ts index 1d3cbb6ec86..9220066be21 100644 --- a/app/client/src/entities/DataTree/dataTreeFactory.ts +++ b/app/client/src/entities/DataTree/dataTreeFactory.ts @@ -10,7 +10,7 @@ import type { EntityTypeValue } from "ee/entities/DataTree/types"; import type { ConfigTree, UnEvalTree } from "entities/DataTree/dataTreeTypes"; import { isEmpty } from "lodash"; import { generateModuleInstance } from "ee/entities/DataTree/dataTreeModuleInstance"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; import type { ActionDataState } from "ee/reducers/entityReducers/actionsReducer"; import type { JSCollectionDataState } from "ee/reducers/entityReducers/jsActionsReducer"; import type { LayoutSystemTypes } from "layoutSystems/types"; diff --git a/app/client/src/entities/Engine/AppEditorEngine.ts b/app/client/src/entities/Engine/AppEditorEngine.ts index 30ee9158ae7..f5b0f04b228 100644 --- a/app/client/src/entities/Engine/AppEditorEngine.ts +++ b/app/client/src/entities/Engine/AppEditorEngine.ts @@ -66,8 +66,8 @@ import { fetchSelectedAppThemeAction, } from "actions/appThemingActions"; import { getCurrentApplication } from "ee/selectors/applicationSelectors"; -import type { Span } from "@opentelemetry/api"; -import { endSpan, startNestedSpan } from "UITelemetry/generateTraces"; +import type { Span } from "instrumentation/types"; +import { endSpan, startNestedSpan } from "instrumentation/generateTraces"; import { getCurrentUser } from "selectors/usersSelectors"; import type { User } from "constants/userConstants"; import log from "loglevel"; diff --git a/app/client/src/entities/Engine/AppViewerEngine.ts b/app/client/src/entities/Engine/AppViewerEngine.ts index fc5aa028e11..9fd5485026a 100644 --- a/app/client/src/entities/Engine/AppViewerEngine.ts +++ b/app/client/src/entities/Engine/AppViewerEngine.ts @@ -27,8 +27,9 @@ import { fetchAppThemesAction, fetchSelectedAppThemeAction, } from "actions/appThemingActions"; -import type { Span } from "@opentelemetry/api"; -import { endSpan, startNestedSpan } from "UITelemetry/generateTraces"; +import type { Span } from "instrumentation/types"; +import { endSpan, startNestedSpan } from "instrumentation/generateTraces"; + export default class AppViewerEngine extends AppEngine { constructor(mode: APP_MODE) { super(mode); diff --git a/app/client/src/entities/Engine/index.ts b/app/client/src/entities/Engine/index.ts index 03d66ec09a5..aadfd66a431 100644 --- a/app/client/src/entities/Engine/index.ts +++ b/app/client/src/entities/Engine/index.ts @@ -19,8 +19,8 @@ import URLGeneratorFactory from "entities/URLRedirect/factory"; import { updateBranchLocally } from "actions/gitSyncActions"; import { getCurrentGitBranch } from "selectors/gitSyncSelectors"; import { restoreIDEEditorViewMode } from "actions/ideActions"; -import type { Span } from "@opentelemetry/api"; -import { endSpan, startNestedSpan } from "UITelemetry/generateTraces"; +import type { Span } from "instrumentation/types"; +import { endSpan, startNestedSpan } from "instrumentation/generateTraces"; export interface AppEnginePayload { applicationId?: string; diff --git a/app/client/src/index.tsx b/app/client/src/index.tsx index 6688d1f2071..4f14d5f33a5 100755 --- a/app/client/src/index.tsx +++ b/app/client/src/index.tsx @@ -15,7 +15,6 @@ import { appInitializer } from "utils/AppUtils"; import store, { runSagaMiddleware } from "./store"; import { LayersContext, Layers } from "constants/Layers"; import AppRouter from "ee/AppRouter"; -import * as Sentry from "@sentry/react"; import { getCurrentThemeDetails } from "selectors/themeSelectors"; import { connect } from "react-redux"; import type { AppState } from "ee/reducers"; @@ -27,52 +26,8 @@ import GlobalStyles from "globalStyles"; import { setAutoFreeze } from "immer"; import AppErrorBoundary from "./AppErrorBoundry"; import log from "loglevel"; -import { getAppsmithConfigs } from "ee/configs"; -import { PageViewTiming } from "@newrelic/browser-agent/features/page_view_timing"; -import { PageViewEvent } from "@newrelic/browser-agent/features/page_view_event"; -import { Agent } from "@newrelic/browser-agent/loaders/agent"; -import { getCommonTelemetryAttributes } from "UITelemetry/generateTraces"; -const { newRelic } = getAppsmithConfigs(); -const { enableNewRelic } = newRelic; - -const newRelicBrowserAgentConfig = { - init: { - distributed_tracing: { enabled: true }, - privacy: { cookies_enabled: true }, - }, - info: { - beacon: newRelic.browserAgentEndpoint, - errorBeacon: newRelic.browserAgentEndpoint, - licenseKey: newRelic.browserAgentlicenseKey, - applicationID: newRelic.applicationId, - sa: 1, - }, - loader_config: { - accountID: newRelic.accountId, - trustKey: newRelic.accountId, - agentID: newRelic.applicationId, - licenseKey: newRelic.browserAgentlicenseKey, - applicationID: newRelic.applicationId, - }, -}; - -// The agent loader code executes immediately on instantiation. -if (enableNewRelic) { - const newRelicBrowserAgent = new Agent( - { - ...newRelicBrowserAgentConfig, - features: [PageViewTiming, PageViewEvent], - }, - // The second argument agentIdentifier is not marked as optional in its type definition. - // Passing a null value throws an error as well. So we pass undefined. - undefined, - ); - - const { appMode, otlpSessionId } = getCommonTelemetryAttributes(); - - newRelicBrowserAgent.setCustomAttribute("otlpSessionId", otlpSessionId); - newRelicBrowserAgent.setCustomAttribute("appMode", appMode); -} +import { FaroErrorBoundary } from "@grafana/faro-react"; +import { isTracingEnabled } from "instrumentation/utils"; const shouldAutoFreeze = process.env.NODE_ENV === "development"; @@ -81,11 +36,11 @@ runSagaMiddleware(); appInitializer(); -enableNewRelic && +isTracingEnabled() && (async () => { try { await import( - /* webpackChunkName: "otlpTelemetry" */ "./UITelemetry/auto-otel-web" + /* webpackChunkName: "instrumentation" */ "./instrumentation" ); } catch (e) { log.error("Error loading telemetry script", e); @@ -94,13 +49,13 @@ enableNewRelic && function App() { return ( - + An error has occured}> - + ); } diff --git a/app/client/src/UITelemetry/PageLoadInstrumentation.ts b/app/client/src/instrumentation/PageLoadInstrumentation.ts similarity index 99% rename from app/client/src/UITelemetry/PageLoadInstrumentation.ts rename to app/client/src/instrumentation/PageLoadInstrumentation.ts index 801038068b1..d8d4d08b669 100644 --- a/app/client/src/UITelemetry/PageLoadInstrumentation.ts +++ b/app/client/src/instrumentation/PageLoadInstrumentation.ts @@ -1,4 +1,4 @@ -import type { Span } from "@opentelemetry/api"; +import type { Span } from "instrumentation/types"; import { InstrumentationBase } from "@opentelemetry/instrumentation"; import { startRootSpan, startNestedSpan } from "./generateTraces"; import { onLCP, onFCP } from "web-vitals/attribution"; diff --git a/app/client/src/instrumentation/generateTraces.ts b/app/client/src/instrumentation/generateTraces.ts new file mode 100644 index 00000000000..5159239e58e --- /dev/null +++ b/app/client/src/instrumentation/generateTraces.ts @@ -0,0 +1,115 @@ +import type { + Span, + Attributes, + TimeInput, + SpanOptions, +} from "@opentelemetry/api"; +import { SpanKind } from "@opentelemetry/api"; +import { getTraceAndContext } from "./index"; +import type { WebworkerSpanData } from "./types"; +import { getCommonTelemetryAttributes } from "./utils"; + +const { context, trace } = getTraceAndContext(); + +const DEFAULT_TRACE = "default"; + +export function startRootSpan( + spanName: string, + spanAttributes: Attributes = {}, + startTime?: TimeInput, +) { + const tracer = trace.getTracer(DEFAULT_TRACE); + const commonAttributes = getCommonTelemetryAttributes(); + + return tracer.startSpan(spanName, { + kind: SpanKind.CLIENT, + attributes: { + ...commonAttributes, + ...spanAttributes, + }, + startTime, + }); +} + +export const generateContext = (span: Span) => { + if (!context) { + return; + } + + return trace?.setSpan(context.active(), span); +}; + +export function startNestedSpan( + spanName: string, + parentSpan: Span, + spanAttributes: Attributes = {}, + startTime?: TimeInput, +) { + const parentContext = generateContext(parentSpan); + + const generatorTrace = trace.getTracer(DEFAULT_TRACE); + const commonAttributes = getCommonTelemetryAttributes(); + + const spanOptions: SpanOptions = { + kind: SpanKind.CLIENT, + attributes: { + ...commonAttributes, + ...spanAttributes, + }, + startTime, + }; + + return generatorTrace?.startSpan(spanName, spanOptions, parentContext); +} + +export function endSpan(span?: Span) { + span?.end(); +} + +export function setAttributesToSpan( + span?: Span, + spanAttributes: Attributes = {}, +) { + span?.setAttributes(spanAttributes); +} + +export const startAndEndSpanForFn = ( + spanName: string, + spanAttributes: Attributes = {}, + fn: () => T, +) => { + const span = startRootSpan(spanName, spanAttributes); + const res: T = fn(); + + span?.end(); + + return res; +}; + +export function startAndEndSpan( + spanName: string, + startTime: number, + difference: number, + spanAttributes: Attributes = {}, +) { + const endTime = startTime + Math.floor(difference); + + const span = startRootSpan(spanName, spanAttributes, startTime); + + span?.end(endTime); +} + +//convert webworker spans to OTLP spans +export const convertWebworkerSpansToRegularSpans = ( + parentSpan: Span, + allSpans: Record = {}, +) => { + Object.values(allSpans) + .filter(({ endTime, startTime }) => startTime && endTime) + .forEach((spanData) => { + const { attributes, endTime, spanName, startTime } = spanData; + const span = startNestedSpan(spanName, parentSpan, attributes, startTime); + + span?.end(endTime); + }); +}; diff --git a/app/client/src/UITelemetry/generateWebWorkerTraces.ts b/app/client/src/instrumentation/generateWebWorkerTraces.ts similarity index 54% rename from app/client/src/UITelemetry/generateWebWorkerTraces.ts rename to app/client/src/instrumentation/generateWebWorkerTraces.ts index f677f1da611..598d8820971 100644 --- a/app/client/src/UITelemetry/generateWebWorkerTraces.ts +++ b/app/client/src/instrumentation/generateWebWorkerTraces.ts @@ -1,20 +1,11 @@ -import type { OtlpSpan, SpanAttributes } from "./generateTraces"; -import { startNestedSpan } from "./generateTraces"; -import type { TimeInput } from "@opentelemetry/api"; - -export interface WebworkerSpanData { - attributes: SpanAttributes; - spanName: string; - startTime: TimeInput; - endTime: TimeInput; -} +import type { WebworkerSpanData, Attributes } from "./types"; //this is used in webworkers to generate telemetry data //this telemetry data is pushed to the main thread which is converted //to regular otlp telemetry data and subsequently exported to our telemetry collector export const newWebWorkerSpanData = ( spanName: string, - attributes: SpanAttributes = {}, + attributes: Attributes = {}, ): WebworkerSpanData => { return { attributes, @@ -31,8 +22,8 @@ const addEndTimeForWebWorkerSpanData = (span: WebworkerSpanData) => { export const profileAsyncFn = async ( spanName: string, fn: () => Promise, - allSpans: Record, - attributes: SpanAttributes = {}, + allSpans: Record, + attributes: Attributes = {}, ) => { const span = newWebWorkerSpanData(spanName, attributes); const res: T = await fn(); @@ -45,8 +36,8 @@ export const profileAsyncFn = async ( export const profileFn = ( spanName: string, - attributes: SpanAttributes = {}, - allSpans: Record, + attributes: Attributes = {}, + allSpans: Record, fn: () => T, ) => { const span = newWebWorkerSpanData(spanName, attributes); @@ -58,23 +49,8 @@ export const profileFn = ( return res; }; -//convert webworker spans to OTLP spans -export const convertWebworkerSpansToRegularSpans = ( - parentSpan: OtlpSpan, - allSpans: Record = {}, -) => { - Object.values(allSpans) - .filter(({ endTime, startTime }) => startTime && endTime) - .forEach((spanData) => { - const { attributes, endTime, spanName, startTime } = spanData; - const span = startNestedSpan(spanName, parentSpan, attributes, startTime); - - span?.end(endTime); - }); -}; - export const filterSpanData = ( - spanData: Record, + spanData: Record, ): Record => { return Object.keys(spanData) .filter((key) => !key.startsWith("__")) diff --git a/app/client/src/instrumentation/index.ts b/app/client/src/instrumentation/index.ts new file mode 100644 index 00000000000..0dbf4ae4abb --- /dev/null +++ b/app/client/src/instrumentation/index.ts @@ -0,0 +1,86 @@ +import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base"; +import { WebTracerProvider } from "@opentelemetry/sdk-trace-web"; +import { ZoneContextManager } from "@opentelemetry/context-zone"; +import { trace, context } from "@opentelemetry/api"; +import { Resource } from "@opentelemetry/resources"; +import { + ATTR_DEPLOYMENT_NAME, + ATTR_SERVICE_INSTANCE_ID, +} from "@opentelemetry/semantic-conventions/incubating"; +import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; +import { getAppsmithConfigs } from "ee/configs"; +import { + initializeFaro, + ReactIntegration, + getWebInstrumentations, + type Faro, + InternalLoggerLevel, +} from "@grafana/faro-react"; +import { + FaroTraceExporter, + FaroSessionSpanProcessor, +} from "@grafana/faro-web-tracing"; +import log from "loglevel"; +import { isTracingEnabled } from "instrumentation/utils"; + +const { appVersion, observability } = getAppsmithConfigs(); +const { deploymentName, serviceInstanceId, serviceName, tracingUrl } = + observability; + +let faro: Faro | null = null; + +if (isTracingEnabled()) { + const ignoreUrls = ["smartlook.cloud"]; + const internalLoggerLevel = + log.getLevel() === log.levels.DEBUG + ? InternalLoggerLevel.ERROR + : InternalLoggerLevel.OFF; + + faro = initializeFaro({ + url: tracingUrl, + app: { + name: serviceName, + version: appVersion.sha, + environment: deploymentName, + }, + instrumentations: [new ReactIntegration(), ...getWebInstrumentations()], + ignoreUrls, + consoleInstrumentation: { + consoleErrorAsLog: true, + }, + trackResources: true, + trackWebVitalsAttribution: true, + internalLoggerLevel, + }); + + const tracerProvider = new WebTracerProvider({ + resource: new Resource({ + [ATTR_DEPLOYMENT_NAME]: deploymentName, + [ATTR_SERVICE_INSTANCE_ID]: serviceInstanceId, + [ATTR_SERVICE_NAME]: serviceName, + }), + }); + + tracerProvider.addSpanProcessor( + new FaroSessionSpanProcessor( + new BatchSpanProcessor(new FaroTraceExporter({ ...faro })), + faro.metas, + ), + ); + + tracerProvider.register({ + contextManager: new ZoneContextManager(), + }); + + faro.api.initOTEL(trace, context); +} + +export const getTraceAndContext = () => { + if (!faro) { + return { trace, context }; + } + + // The return type of getOTEL is OTELApi | undefined so we need to check for undefined + // return default OTEL context and trace if faro is not initialized + return faro.api.getOTEL() || { trace, context }; +}; diff --git a/app/client/src/instrumentation/types.ts b/app/client/src/instrumentation/types.ts new file mode 100644 index 00000000000..211b137fe90 --- /dev/null +++ b/app/client/src/instrumentation/types.ts @@ -0,0 +1,15 @@ +import type { + Attributes as OTELAttributes, + TimeInput, + Span as OTELSpan, +} from "@opentelemetry/api"; + +export interface WebworkerSpanData { + attributes: OTELAttributes; + spanName: string; + startTime: TimeInput; + endTime: TimeInput; +} + +export type Attributes = OTELAttributes; +export type Span = OTELSpan; diff --git a/app/client/src/instrumentation/utils.ts b/app/client/src/instrumentation/utils.ts new file mode 100644 index 00000000000..ff1b8b819e1 --- /dev/null +++ b/app/client/src/instrumentation/utils.ts @@ -0,0 +1,63 @@ +import { + deviceType, + browserName, + browserVersion, + osName, + osVersion, +} from "react-device-detect"; +import nanoid from "nanoid"; +import memoizeOne from "memoize-one"; +import { getApplicationParamsFromUrl } from "ee/utils/serviceWorkerUtils"; +import { getAppsmithConfigs } from "ee/configs"; + +const OTLP_SESSION_ID = nanoid(); + +const getAppParams = memoizeOne( + (origin: string, pathname: string, search: string) => { + const applicationParams = getApplicationParamsFromUrl({ + origin, + pathname, + search, + }); + + const { + applicationSlug, + appMode = "", + basePageId: pageId, + branchName, + } = applicationParams || {}; + + return { + appMode, + pageId, + branchName, + applicationSlug, + }; + }, +); + +export const getCommonTelemetryAttributes = () => { + const { origin, pathname, search } = window.location; + const appParams = getAppParams(origin, pathname, search); + + return { + ...appParams, + deviceType, + browserName, + browserVersion, + otlpSessionId: OTLP_SESSION_ID, + hostname: window.location.hostname, + osName, + osVersion, + }; +}; + +export const isTracingEnabled = () => { + const { observability } = getAppsmithConfigs(); + + if (observability.tracingUrl) { + return true; + } + + return false; +}; diff --git a/app/client/src/plugins/Linting/types.ts b/app/client/src/plugins/Linting/types.ts index 8c8a77443c3..0e9cb1dcb66 100644 --- a/app/client/src/plugins/Linting/types.ts +++ b/app/client/src/plugins/Linting/types.ts @@ -11,11 +11,10 @@ import type { import type { DependencyMap } from "utils/DynamicBindingUtils"; import type { TJSPropertiesState } from "workers/Evaluation/JSObject/jsPropertiesState"; import type { JSLibrary } from "workers/common/JSLibrary"; -import type { WebworkerSpanData } from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +import type { WebworkerSpanData, Attributes } from "instrumentation/types"; import type { LINTER_TYPE } from "./constants"; -export type WebworkerTelemetryAttribute = WebworkerSpanData | SpanAttributes; +export type WebworkerTelemetryAttribute = WebworkerSpanData | Attributes; export enum LINT_WORKER_ACTIONS { LINT_TREE = "LINT_TREE", diff --git a/app/client/src/plugins/Linting/utils/getLintingErrors.ts b/app/client/src/plugins/Linting/utils/getLintingErrors.ts index ec13f42f82d..af7e9a41cd6 100644 --- a/app/client/src/plugins/Linting/utils/getLintingErrors.ts +++ b/app/client/src/plugins/Linting/utils/getLintingErrors.ts @@ -38,7 +38,7 @@ import { isMemberExpressionNode } from "@shared/ast/src"; import { generate } from "astring"; import getInvalidModuleInputsError from "ee/plugins/Linting/utils/getInvalidModuleInputsError"; import { objectKeys } from "@appsmith/utils"; -import { profileFn } from "UITelemetry/generateWebWorkerTraces"; +import { profileFn } from "instrumentation/generateWebWorkerTraces"; import { WorkerEnv } from "workers/Evaluation/handlers/workerEnv"; import { FEATURE_FLAG } from "ee/entities/FeatureFlag"; import { Linter } from "eslint-linter-browserify"; diff --git a/app/client/src/sagas/ActionExecution/PluginActionSaga.ts b/app/client/src/sagas/ActionExecution/PluginActionSaga.ts index fdc5fb83dc6..2b50c6e9895 100644 --- a/app/client/src/sagas/ActionExecution/PluginActionSaga.ts +++ b/app/client/src/sagas/ActionExecution/PluginActionSaga.ts @@ -154,12 +154,11 @@ import { } from "ee/selectors/environmentSelectors"; import { EVAL_WORKER_ACTIONS } from "ee/workers/Evaluation/evalWorkerActions"; import { getIsActionCreatedInApp } from "ee/utils/getIsActionCreatedInApp"; -import type { OtlpSpan } from "UITelemetry/generateTraces"; import { endSpan, setAttributesToSpan, startRootSpan, -} from "UITelemetry/generateTraces"; +} from "instrumentation/generateTraces"; import { getActionExecutionAnalytics, getActionProperties, @@ -175,6 +174,7 @@ import { setPluginActionEditorDebuggerState, } from "PluginActionEditor/store"; import { objectKeys } from "@appsmith/utils"; +import type { Span } from "instrumentation/types"; enum ActionResponseDataTypes { BINARY = "BINARY", @@ -1094,7 +1094,7 @@ function* executeOnPageLoadJSAction(pageAction: PageAction) { function* executePageLoadAction( pageAction: PageAction, - span?: OtlpSpan, + span?: Span, actionExecutionContext?: ActionExecutionContext, ) { const currentEnvDetails: { id: string; name: string } = yield select( @@ -1334,7 +1334,7 @@ function* executePluginActionSaga( paginationField?: PaginationField, params?: Record, isUserInitiated?: boolean, - parentSpan?: OtlpSpan, + parentSpan?: Span, ) { const actionId = pluginAction.id; const baseActionId = pluginAction.baseId; diff --git a/app/client/src/sagas/EvalWorkerActionSagas.ts b/app/client/src/sagas/EvalWorkerActionSagas.ts index 1d12806fe85..6da3b1364af 100644 --- a/app/client/src/sagas/EvalWorkerActionSagas.ts +++ b/app/client/src/sagas/EvalWorkerActionSagas.ts @@ -23,7 +23,7 @@ import { sortJSExecutionDataByCollectionId } from "workers/Evaluation/JSObject/u import type { LintTreeSagaRequestData } from "plugins/Linting/types"; import { evalErrorHandler } from "./EvalErrorHandler"; import { getUnevaluatedDataTree } from "selectors/dataTreeSelectors"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; export interface UpdateDataTreeMessageData { workerResponse: EvalTreeResponseData; diff --git a/app/client/src/sagas/EvaluationsSaga.ts b/app/client/src/sagas/EvaluationsSaga.ts index d1dc2dfe075..a6a48553865 100644 --- a/app/client/src/sagas/EvaluationsSaga.ts +++ b/app/client/src/sagas/EvaluationsSaga.ts @@ -109,7 +109,7 @@ import { getFeatureFlagsFetched } from "selectors/usersSelectors"; import { getIsCurrentEditorWorkflowType } from "ee/selectors/workflowSelectors"; import { evalErrorHandler } from "./EvalErrorHandler"; import AnalyticsUtil from "ee/utils/AnalyticsUtil"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; import { transformTriggerEvalErrors } from "ee/sagas/helpers"; import { getApplicationLastDeployedAt, diff --git a/app/client/src/sagas/InitSagas.ts b/app/client/src/sagas/InitSagas.ts index f571904379b..76cc2c4ce72 100644 --- a/app/client/src/sagas/InitSagas.ts +++ b/app/client/src/sagas/InitSagas.ts @@ -87,7 +87,7 @@ import { endSpan, startNestedSpan, startRootSpan, -} from "UITelemetry/generateTraces"; +} from "instrumentation/generateTraces"; import type { ApplicationPayload } from "entities/Application"; import type { Page } from "entities/Page"; import type { PACKAGE_PULL_STATUS } from "ee/constants/ModuleConstants"; diff --git a/app/client/src/sagas/JSLibrarySaga.ts b/app/client/src/sagas/JSLibrarySaga.ts index 52fc076cca5..37132863d9a 100644 --- a/app/client/src/sagas/JSLibrarySaga.ts +++ b/app/client/src/sagas/JSLibrarySaga.ts @@ -31,7 +31,7 @@ import { getUsedActionNames } from "selectors/actionSelectors"; import AppsmithConsole from "utils/AppsmithConsole"; import { selectInstalledLibraries } from "ee/selectors/entitiesSelector"; import { toast } from "@appsmith/ads"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; import { getFromServerWhenNoPrefetchedResult } from "./helper"; export function parseErrorMessage(text: string) { diff --git a/app/client/src/sagas/PostEvaluationSagas.ts b/app/client/src/sagas/PostEvaluationSagas.ts index 39ea5b20938..ab989b915fa 100644 --- a/app/client/src/sagas/PostEvaluationSagas.ts +++ b/app/client/src/sagas/PostEvaluationSagas.ts @@ -38,7 +38,7 @@ import SuccessfulBindingMap from "utils/SuccessfulBindingsMap"; import { getCurrentWorkspaceId } from "ee/selectors/selectedWorkspaceSelectors"; import { getInstanceId } from "ee/selectors/tenantSelectors"; import type { EvalTreeResponseData } from "workers/Evaluation/types"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; import { getJSActionPathNameToDisplay } from "ee/utils/actionExecutionUtils"; import { showToastOnExecutionError } from "./ActionExecution/errorUtils"; import { waitForFetchEnvironments } from "ee/sagas/EnvironmentSagas"; diff --git a/app/client/src/sagas/__tests__/initSagas.test.ts b/app/client/src/sagas/__tests__/initSagas.test.ts index 66874ab803f..759e542afda 100644 --- a/app/client/src/sagas/__tests__/initSagas.test.ts +++ b/app/client/src/sagas/__tests__/initSagas.test.ts @@ -10,7 +10,7 @@ import type { AppEnginePayload } from "entities/Engine"; import { testSaga } from "redux-saga-test-plan"; import { generateAutoHeightLayoutTreeAction } from "actions/autoHeightActions"; import mockResponse from "./mockConsolidatedApiResponse.json"; -import { startRootSpan } from "UITelemetry/generateTraces"; +import { startRootSpan } from "instrumentation/generateTraces"; jest.mock("../../api/Api", () => ({ __esModule: true, diff --git a/app/client/src/utils/WorkerUtil.ts b/app/client/src/utils/WorkerUtil.ts index 239e0d3ffcc..b7a5bb72814 100644 --- a/app/client/src/utils/WorkerUtil.ts +++ b/app/client/src/utils/WorkerUtil.ts @@ -5,18 +5,21 @@ import { uniqueId } from "lodash"; import log from "loglevel"; import type { TMessage } from "./MessageUtil"; import { MessageType, sendMessage } from "./MessageUtil"; -import type { OtlpSpan, SpanAttributes } from "UITelemetry/generateTraces"; import { endSpan, setAttributesToSpan, startRootSpan, -} from "UITelemetry/generateTraces"; -import type { WebworkerSpanData } from "UITelemetry/generateWebWorkerTraces"; -import { convertWebworkerSpansToRegularSpans, +} from "instrumentation/generateTraces"; +import type { + WebworkerSpanData, + Attributes, + Span, +} from "instrumentation/types"; +import { filterSpanData, newWebWorkerSpanData, -} from "UITelemetry/generateWebWorkerTraces"; +} from "instrumentation/generateWebWorkerTraces"; /** * Wrap a webworker to provide a synchronous request-response semantic. @@ -189,9 +192,9 @@ export class GracefulWorkerService { webworkerTelemetry, }: { webworkerTelemetry: - | Record + | Record | undefined; - rootSpan: OtlpSpan | undefined; + rootSpan: Span | undefined; method: string; startTime: number; endTime: number; @@ -261,7 +264,7 @@ export class GracefulWorkerService { const webworkerTelemetryData: Record< string, - WebworkerSpanData | SpanAttributes + WebworkerSpanData | Attributes > = { transferDataToWorkerThread: newWebWorkerSpanData( "transferDataToWorkerThread", @@ -278,7 +281,7 @@ export class GracefulWorkerService { let webworkerTelemetryResponse: Record< string, - WebworkerSpanData | SpanAttributes + WebworkerSpanData | Attributes > = {}; try { @@ -330,7 +333,7 @@ export class GracefulWorkerService { ) { setAttributesToSpan( rootSpan, - webworkerTelemetryResponse.__spanAttributes as SpanAttributes, + webworkerTelemetryResponse.__spanAttributes as Attributes, ); } diff --git a/app/client/src/utils/helpers.tsx b/app/client/src/utils/helpers.tsx index 698a7d12281..da98b8cd1ff 100644 --- a/app/client/src/utils/helpers.tsx +++ b/app/client/src/utils/helpers.tsx @@ -43,7 +43,7 @@ import { klona as klonaRegular } from "klona"; import { klona as klonaLite } from "klona/lite"; import { klona as klonaJson } from "klona/json"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { startAndEndSpanForFn } from "instrumentation/generateTraces"; export const snapToGrid = ( columnWidth: number, diff --git a/app/client/src/widgets/BaseWidgetHOC/WidgetProfiler.tsx b/app/client/src/widgets/BaseWidgetHOC/WidgetProfiler.tsx deleted file mode 100644 index 6b439a7bb1c..00000000000 --- a/app/client/src/widgets/BaseWidgetHOC/WidgetProfiler.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import React, { Profiler, useCallback } from "react"; -import { startAndEndSpan } from "UITelemetry/generateTraces"; -export const WidgetProfiler = ({ - children, - type, - widgetId, -}: { - children: React.ReactNode; - type: string; - widgetId: string; -}) => { - const onRender = useCallback( - (id: string, phase: string, actualDuration: number) => { - startAndEndSpan("widgetRender", Date.now(), actualDuration, { - widgetType: type, - // mount or update phase - phase, - }); - }, - [type], - ); - - return ( - - {children} - - ); -}; diff --git a/app/client/src/widgets/JSONFormWidget/fields/useRegisterFieldValidity.ts b/app/client/src/widgets/JSONFormWidget/fields/useRegisterFieldValidity.ts index 6c9ae92bf3d..30720b4faf9 100644 --- a/app/client/src/widgets/JSONFormWidget/fields/useRegisterFieldValidity.ts +++ b/app/client/src/widgets/JSONFormWidget/fields/useRegisterFieldValidity.ts @@ -6,7 +6,7 @@ import { useContext, useEffect } from "react"; import FormContext from "../FormContext"; import type { FieldType } from "../constants"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { startAndEndSpanForFn } from "instrumentation/generateTraces"; import { klonaRegularWithTelemetry } from "utils/helpers"; export interface UseRegisterFieldValidityProps { diff --git a/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.test.tsx b/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.test.tsx index 8a6af4f3b91..96b75150512 100644 --- a/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.test.tsx +++ b/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.test.tsx @@ -1,14 +1,14 @@ import { renderHook } from "@testing-library/react-hooks"; import { useFormContext } from "react-hook-form"; import useUnmountFieldValidation from "./useUnmountFieldValidation"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { startAndEndSpanForFn } from "instrumentation/generateTraces"; // Mock dependencies jest.mock("react-hook-form", () => ({ useFormContext: jest.fn(), })); -jest.mock("UITelemetry/generateTraces", () => ({ +jest.mock("instrumentation/generateTraces", () => ({ startAndEndSpanForFn: jest.fn((name, options, fn) => fn()), })); diff --git a/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.ts b/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.ts index 13c449ca292..b89fd9e0d85 100644 --- a/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.ts +++ b/app/client/src/widgets/JSONFormWidget/fields/useUnmountFieldValidation.ts @@ -1,7 +1,7 @@ import { useEffect } from "react"; import { useFormContext } from "react-hook-form"; import type { ControllerProps } from "react-hook-form"; -import { startAndEndSpanForFn } from "UITelemetry/generateTraces"; +import { startAndEndSpanForFn } from "instrumentation/generateTraces"; export interface UseUnmountFieldValidationProps { fieldName: ControllerProps["name"]; diff --git a/app/client/src/widgets/JSONFormWidget/widget/index.tsx b/app/client/src/widgets/JSONFormWidget/widget/index.tsx index b7254a4a189..36f8ba94801 100644 --- a/app/client/src/widgets/JSONFormWidget/widget/index.tsx +++ b/app/client/src/widgets/JSONFormWidget/widget/index.tsx @@ -67,7 +67,7 @@ import { ONSUBMIT_NOT_CONFIGURED_MESSAGE, } from "../constants/messages"; import { createMessage } from "ee/constants/messages"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; import { klonaRegularWithTelemetry } from "utils/helpers"; const SUBMIT_BUTTON_DEFAULT_STYLES = { diff --git a/app/client/src/widgets/withWidgetProps.tsx b/app/client/src/widgets/withWidgetProps.tsx index 6eef5897bc3..73dfd519687 100644 --- a/app/client/src/widgets/withWidgetProps.tsx +++ b/app/client/src/widgets/withWidgetProps.tsx @@ -49,10 +49,7 @@ import { getLayoutSystemType } from "selectors/layoutSystemSelectors"; import { isWidgetSelectedForPropertyPane } from "selectors/propertyPaneSelectors"; import WidgetFactory from "WidgetProvider/factory"; import { getIsAnvilLayout } from "layoutSystems/anvil/integrations/selectors"; -import { WidgetProfiler } from "./BaseWidgetHOC/WidgetProfiler"; -import { getAppsmithConfigs } from "ee/configs"; -import { endSpan, startRootSpan } from "UITelemetry/generateTraces"; -const { newRelic } = getAppsmithConfigs(); +import { endSpan, startRootSpan } from "instrumentation/generateTraces"; const WIDGETS_WITH_CHILD_WIDGETS = ["LIST_WIDGET", "FORM_WIDGET"]; const WIDGETS_REQUIRING_SELECTED_ANCESTRY = ["MODAL_WIDGET", "TABS_WIDGET"]; @@ -371,15 +368,7 @@ function withWidgetProps(WrappedWidget: typeof BaseWidget) { } } - if (!newRelic.enableNewRelic) { - return ; - } - - return ( - - - - ); + return ; } return WrappedPropsComponent; diff --git a/app/client/src/workers/Evaluation/JSObject/__test__/mutation.test.ts b/app/client/src/workers/Evaluation/JSObject/__test__/mutation.test.ts index cd0945a8091..ddeb3d22306 100644 --- a/app/client/src/workers/Evaluation/JSObject/__test__/mutation.test.ts +++ b/app/client/src/workers/Evaluation/JSObject/__test__/mutation.test.ts @@ -1,5 +1,5 @@ import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { createEvaluationContext } from "workers/Evaluation/evaluate"; import JSObjectCollection from "../Collection"; import ExecutionMetaData from "workers/Evaluation/fns/utils/ExecutionMetaData"; diff --git a/app/client/src/workers/Evaluation/JSObject/utils.ts b/app/client/src/workers/Evaluation/JSObject/utils.ts index a1cb89f25a9..1277fe6f1a0 100644 --- a/app/client/src/workers/Evaluation/JSObject/utils.ts +++ b/app/client/src/workers/Evaluation/JSObject/utils.ts @@ -7,7 +7,7 @@ import type { DataTree, DataTreeEntity, } from "entities/DataTree/dataTreeTypes"; -import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; +import { EvaluationSubstitutionType } from "ee/entities/DataTree/types"; import type { ParsedBody, ParsedJSSubAction } from "utils/JSPaneUtils"; import { unset, set, get, find } from "lodash"; import type { diff --git a/app/client/src/workers/Evaluation/__tests__/Actions.test.ts b/app/client/src/workers/Evaluation/__tests__/Actions.test.ts index 8300a7d5f43..aafe688b839 100644 --- a/app/client/src/workers/Evaluation/__tests__/Actions.test.ts +++ b/app/client/src/workers/Evaluation/__tests__/Actions.test.ts @@ -1,6 +1,6 @@ import type { ActionEntity } from "ee/entities/DataTree/types"; import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { PluginType } from "entities/Action"; import type { EvalContext } from "workers/Evaluation/evaluate"; import { createEvaluationContext } from "workers/Evaluation/evaluate"; diff --git a/app/client/src/workers/Evaluation/__tests__/evaluate.test.ts b/app/client/src/workers/Evaluation/__tests__/evaluate.test.ts index e905500327a..ade24a28925 100644 --- a/app/client/src/workers/Evaluation/__tests__/evaluate.test.ts +++ b/app/client/src/workers/Evaluation/__tests__/evaluate.test.ts @@ -5,7 +5,7 @@ import { } from "workers/Evaluation/evaluate"; import type { WidgetEntity } from "ee/entities/DataTree/types"; import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { RenderModes } from "constants/WidgetConstants"; import setupEvalEnv from "../handlers/setupEvalEnv"; import { resetJSLibraries } from "workers/common/JSLibrary/resetJSLibraries"; diff --git a/app/client/src/workers/Evaluation/__tests__/evaluation.test.ts b/app/client/src/workers/Evaluation/__tests__/evaluation.test.ts index 88fa7c5a569..9fb5468e4c7 100644 --- a/app/client/src/workers/Evaluation/__tests__/evaluation.test.ts +++ b/app/client/src/workers/Evaluation/__tests__/evaluation.test.ts @@ -8,7 +8,7 @@ import type { UnEvalTree, ConfigTree } from "entities/DataTree/dataTreeTypes"; import { ENTITY_TYPE, EvaluationSubstitutionType, -} from "entities/DataTree/dataTreeFactory"; +} from "ee/entities/DataTree/types"; import type { WidgetTypeConfigMap } from "WidgetProvider/factory"; import { RenderModes } from "constants/WidgetConstants"; import { PluginType } from "entities/Action"; diff --git a/app/client/src/workers/Evaluation/__tests__/evaluationSubstitution.test.ts b/app/client/src/workers/Evaluation/__tests__/evaluationSubstitution.test.ts index 6c90c1d9aab..c5b8b1f856b 100644 --- a/app/client/src/workers/Evaluation/__tests__/evaluationSubstitution.test.ts +++ b/app/client/src/workers/Evaluation/__tests__/evaluationSubstitution.test.ts @@ -1,5 +1,5 @@ import { substituteDynamicBindingWithValues } from "workers/Evaluation/evaluationSubstitution"; -import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; +import { EvaluationSubstitutionType } from "ee/entities/DataTree/types"; describe("substituteDynamicBindingWithValues", () => { describe("template substitution", () => { diff --git a/app/client/src/workers/Evaluation/__tests__/timeout.test.ts b/app/client/src/workers/Evaluation/__tests__/timeout.test.ts index 89c380228f6..7f73d651227 100644 --- a/app/client/src/workers/Evaluation/__tests__/timeout.test.ts +++ b/app/client/src/workers/Evaluation/__tests__/timeout.test.ts @@ -1,7 +1,7 @@ import { PluginType } from "entities/Action"; import type { ActionEntity } from "ee/entities/DataTree/types"; import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { createEvaluationContext } from "../evaluate"; import { addPlatformFunctionsToEvalContext } from "ee/workers/Evaluation/Actions"; import { overrideWebAPIs } from "../fns/overrides"; diff --git a/app/client/src/workers/Evaluation/evalTreeWithChanges.test.ts b/app/client/src/workers/Evaluation/evalTreeWithChanges.test.ts index 5ee2ba8b677..e4dc617bca5 100644 --- a/app/client/src/workers/Evaluation/evalTreeWithChanges.test.ts +++ b/app/client/src/workers/Evaluation/evalTreeWithChanges.test.ts @@ -1,7 +1,7 @@ import type { WidgetEntityConfig } from "ee/entities/DataTree/types"; import { DataTreeDiffEvent } from "ee/workers/Evaluation/evaluationUtils"; import { RenderModes } from "constants/WidgetConstants"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import type { ConfigTree } from "entities/DataTree/dataTreeTypes"; import { generateDataTreeWidget } from "entities/DataTree/dataTreeWidget"; import produce from "immer"; diff --git a/app/client/src/workers/Evaluation/evaluationSubstitution.ts b/app/client/src/workers/Evaluation/evaluationSubstitution.ts index f196cfff636..10dc81e03ee 100644 --- a/app/client/src/workers/Evaluation/evaluationSubstitution.ts +++ b/app/client/src/workers/Evaluation/evaluationSubstitution.ts @@ -1,6 +1,6 @@ import { getType, Types } from "utils/TypeHelpers"; import _ from "lodash"; -import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; +import { EvaluationSubstitutionType } from "ee/entities/DataTree/types"; import { isDynamicValue } from "utils/DynamicBindingUtils"; import { QUOTED_BINDING_REGEX } from "constants/BindingsConstants"; diff --git a/app/client/src/workers/Evaluation/fns/__tests__/index.test.ts b/app/client/src/workers/Evaluation/fns/__tests__/index.test.ts index 4785647fd6b..0f422857bd4 100644 --- a/app/client/src/workers/Evaluation/fns/__tests__/index.test.ts +++ b/app/client/src/workers/Evaluation/fns/__tests__/index.test.ts @@ -2,7 +2,7 @@ import { MAIN_THREAD_ACTION } from "ee/workers/Evaluation/evalWorkerActions"; import { addPlatformFunctionsToEvalContext } from "ee/workers/Evaluation/Actions"; import { setEvalContext } from "workers/Evaluation/evaluate"; import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { RenderModes } from "constants/WidgetConstants"; const dataTree: DataTree = { diff --git a/app/client/src/workers/Evaluation/fns/__tests__/interval.test.ts b/app/client/src/workers/Evaluation/fns/__tests__/interval.test.ts index 4120b8574a6..e241b782ba2 100644 --- a/app/client/src/workers/Evaluation/fns/__tests__/interval.test.ts +++ b/app/client/src/workers/Evaluation/fns/__tests__/interval.test.ts @@ -4,7 +4,7 @@ import { EventType } from "constants/AppsmithActionConstants/ActionConstants"; import { PluginType } from "entities/Action"; import type { ActionEntity } from "ee/entities/DataTree/types"; import type { DataTree } from "entities/DataTree/dataTreeTypes"; -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; import { overrideWebAPIs } from "../overrides"; import ExecutionMetaData from "../utils/ExecutionMetaData"; import { addPlatformFunctionsToEvalContext } from "ee/workers/Evaluation/Actions"; diff --git a/app/client/src/workers/Evaluation/handlers/evalTree.ts b/app/client/src/workers/Evaluation/handlers/evalTree.ts index ee786065cba..c8e53a4fc9e 100644 --- a/app/client/src/workers/Evaluation/handlers/evalTree.ts +++ b/app/client/src/workers/Evaluation/handlers/evalTree.ts @@ -30,10 +30,10 @@ import { profileFn, newWebWorkerSpanData, profileAsyncFn, -} from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +} from "instrumentation/generateWebWorkerTraces"; import type { CanvasWidgetsReduxState } from "reducers/entityReducers/canvasWidgetsReducer"; import type { MetaWidgetsReduxState } from "reducers/entityReducers/metaWidgetsReducer"; +import type { Attributes } from "instrumentation/types"; // TODO: Fix this the next time the file is edited // eslint-disable-next-line @typescript-eslint/no-explicit-any @@ -94,7 +94,7 @@ export async function evalTree( let isNewTree = false; try { - (webworkerTelemetry.__spanAttributes as SpanAttributes)["firstEvaluation"] = + (webworkerTelemetry.__spanAttributes as Attributes)["firstEvaluation"] = !dataTreeEvaluator; if (!dataTreeEvaluator) { diff --git a/app/client/src/workers/Evaluation/types.ts b/app/client/src/workers/Evaluation/types.ts index 5fcd231b003..3f150490c0d 100644 --- a/app/client/src/workers/Evaluation/types.ts +++ b/app/client/src/workers/Evaluation/types.ts @@ -15,8 +15,7 @@ import type { EvalMetaUpdates } from "ee/workers/common/DataTreeEvaluator/types" import type { WorkerRequest } from "ee/workers/common/types"; import type { DataTreeDiff } from "ee/workers/Evaluation/evaluationUtils"; import type { APP_MODE } from "entities/App"; -import type { WebworkerSpanData } from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +import type { WebworkerSpanData, Attributes } from "instrumentation/types"; import type { AffectedJSObjects } from "sagas/EvaluationsSagaUtils"; import type { ICacheProps } from "../common/AppComputationCache/types"; @@ -68,7 +67,7 @@ export interface EvalTreeResponseData { isNewWidgetAdded: boolean; undefinedEvalValuesMap: Record; jsVarsCreatedEvent?: { path: string; type: string }[]; - webworkerTelemetry?: Record; + webworkerTelemetry?: Record; updates: string; } diff --git a/app/client/src/workers/common/DataTreeEvaluator/index.ts b/app/client/src/workers/common/DataTreeEvaluator/index.ts index 322890185ff..ecadcb2e4c7 100644 --- a/app/client/src/workers/common/DataTreeEvaluator/index.ts +++ b/app/client/src/workers/common/DataTreeEvaluator/index.ts @@ -32,8 +32,10 @@ import type { ConfigTree, UnEvalTree, } from "entities/DataTree/dataTreeTypes"; -import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; -import { ENTITY_TYPE } from "ee/entities/DataTree/types"; +import { + EvaluationSubstitutionType, + ENTITY_TYPE, +} from "ee/entities/DataTree/types"; import type { DataTreeDiff } from "ee/workers/Evaluation/evaluationUtils"; import { convertMicroDiffToDeepDiff, @@ -142,9 +144,7 @@ import microDiff from "microdiff"; import { profileAsyncFn, profileFn, - type WebworkerSpanData, -} from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +} from "instrumentation/generateWebWorkerTraces"; import type { AffectedJSObjects } from "sagas/EvaluationsSagaUtils"; import generateOverrideContext from "ee/workers/Evaluation/generateOverrideContext"; import appComputationCache from "../AppComputationCache"; @@ -154,6 +154,7 @@ import { } from "../AppComputationCache/types"; import { getDataTreeContext } from "ee/workers/Evaluation/Actions"; import { WorkerEnv } from "workers/Evaluation/handlers/workerEnv"; +import type { WebworkerSpanData, Attributes } from "instrumentation/types"; type SortedDependencies = Array; export interface EvalProps { @@ -252,7 +253,7 @@ export default class DataTreeEvaluator { // eslint-disable-next-line @typescript-eslint/no-explicit-any unEvalTree: any, configTree: ConfigTree, - webworkerTelemetry: Record = {}, + webworkerTelemetry: Record = {}, cacheProps: ICacheProps, ) { this.setConfigTree(configTree); @@ -550,7 +551,7 @@ export default class DataTreeEvaluator { }: { unEvalTree: UnEvalTree; configTree: ConfigTree; - webworkerTelemetry: Record; + webworkerTelemetry: Record; affectedJSObjects: AffectedJSObjects; }) { //get difference in js collection body to be parsed @@ -634,7 +635,7 @@ export default class DataTreeEvaluator { setupUpdateTree( unEvalTree: UnEvalTree, configTree: ConfigTree, - webworkerTelemetry: Record = {}, + webworkerTelemetry: Record = {}, affectedJSObjects: AffectedJSObjects = { isAllAffected: false, ids: [] }, ): { unEvalUpdates: DataTreeDiff[]; diff --git a/app/client/src/workers/common/DataTreeEvaluator/mockData/ArrayAccessorTree.ts b/app/client/src/workers/common/DataTreeEvaluator/mockData/ArrayAccessorTree.ts index 7734e1cbae8..eaab6219a17 100644 --- a/app/client/src/workers/common/DataTreeEvaluator/mockData/ArrayAccessorTree.ts +++ b/app/client/src/workers/common/DataTreeEvaluator/mockData/ArrayAccessorTree.ts @@ -9,7 +9,7 @@ import type { DataTree } from "entities/DataTree/dataTreeTypes"; import { EvaluationSubstitutionType, ENTITY_TYPE, -} from "entities/DataTree/dataTreeFactory"; +} from "ee/entities/DataTree/types"; export const arrayAccessorCyclicDependency: Record = { initUnEvalTree: { diff --git a/app/client/src/workers/common/DataTreeEvaluator/mockData/NestedArrayAccessorTree.ts b/app/client/src/workers/common/DataTreeEvaluator/mockData/NestedArrayAccessorTree.ts index baae4de0a08..964a5013294 100644 --- a/app/client/src/workers/common/DataTreeEvaluator/mockData/NestedArrayAccessorTree.ts +++ b/app/client/src/workers/common/DataTreeEvaluator/mockData/NestedArrayAccessorTree.ts @@ -9,7 +9,7 @@ import type { DataTree } from "entities/DataTree/dataTreeTypes"; import { EvaluationSubstitutionType, ENTITY_TYPE, -} from "entities/DataTree/dataTreeFactory"; +} from "ee/entities/DataTree/types"; export const nestedArrayAccessorCyclicDependency: Record = { initUnEvalTree: { diff --git a/app/client/src/workers/common/DataTreeEvaluator/mockData/mockConfigTree.ts b/app/client/src/workers/common/DataTreeEvaluator/mockData/mockConfigTree.ts index bfe6c27a830..460917c15e3 100644 --- a/app/client/src/workers/common/DataTreeEvaluator/mockData/mockConfigTree.ts +++ b/app/client/src/workers/common/DataTreeEvaluator/mockData/mockConfigTree.ts @@ -1,5 +1,5 @@ import { ENTITY_TYPE } from "ee/entities/DataTree/types"; -import { EvaluationSubstitutionType } from "entities/DataTree/dataTreeFactory"; +import { EvaluationSubstitutionType } from "ee/entities/DataTree/types"; export const configTree = { MainContainer: { diff --git a/app/client/src/workers/common/DataTreeEvaluator/mockData/mockUnEvalTree.ts b/app/client/src/workers/common/DataTreeEvaluator/mockData/mockUnEvalTree.ts index b31f17bb649..1fe3507eb25 100644 --- a/app/client/src/workers/common/DataTreeEvaluator/mockData/mockUnEvalTree.ts +++ b/app/client/src/workers/common/DataTreeEvaluator/mockData/mockUnEvalTree.ts @@ -1,4 +1,4 @@ -import { ENTITY_TYPE } from "entities/DataTree/dataTreeFactory"; +import { ENTITY_TYPE } from "ee/entities/DataTree/types"; export const unEvalTree = { MainContainer: { diff --git a/app/client/src/workers/common/DependencyMap/index.ts b/app/client/src/workers/common/DependencyMap/index.ts index 420284ce29b..bd0868c5852 100644 --- a/app/client/src/workers/common/DependencyMap/index.ts +++ b/app/client/src/workers/common/DependencyMap/index.ts @@ -35,18 +35,15 @@ import { type ICacheProps, } from "../AppComputationCache/types"; import type DependencyMap from "entities/DependencyMap"; -import { - profileFn, - type WebworkerSpanData, -} from "UITelemetry/generateWebWorkerTraces"; -import type { SpanAttributes } from "UITelemetry/generateTraces"; +import { profileFn } from "instrumentation/generateWebWorkerTraces"; +import type { WebworkerSpanData, Attributes } from "instrumentation/types"; export async function createDependencyMap( dataTreeEvalRef: DataTreeEvaluator, unEvalTree: DataTree, configTree: ConfigTree, cacheProps: ICacheProps, - webworkerSpans: Record = {}, + webworkerSpans: Record = {}, ) { const { allKeys, dependencyMap } = dataTreeEvalRef; diff --git a/app/client/yarn.lock b/app/client/yarn.lock index 3d018b6438d..a76a9e99a62 100644 --- a/app/client/yarn.lock +++ b/app/client/yarn.lock @@ -871,13 +871,14 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.8.3": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.7, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2, @babel/code-frame@npm:^7.8.3": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": ^7.24.7 + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 picocolors: ^1.0.0 - checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 languageName: node linkType: hard @@ -925,15 +926,16 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.7.2": - version: 7.25.0 - resolution: "@babel/generator@npm:7.25.0" +"@babel/generator@npm:^7.22.5, @babel/generator@npm:^7.25.0, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": + version: 7.26.3 + resolution: "@babel/generator@npm:7.26.3" dependencies: - "@babel/types": ^7.25.0 + "@babel/parser": ^7.26.3 + "@babel/types": ^7.26.3 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^2.5.1 - checksum: bf25649dde4068bff8e387319bf820f2cb3b1af7b8c0cfba0bd90880656427c8bad96cd5cb6db7058d20cffe93149ee59da16567018ceaa21ecaefbf780a785c + jsesc: ^3.0.2 + checksum: fb09fa55c66f272badf71c20a3a2cee0fa1a447fed32d1b84f16a668a42aff3e5f5ddc6ed5d832dda1e952187c002ca1a5cdd827022efe591b6ac44cada884ea languageName: node linkType: hard @@ -1070,13 +1072,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.21.4, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" +"@babel/helper-module-imports@npm:^7.0.0, @babel/helper-module-imports@npm:^7.0.0-beta.49, @babel/helper-module-imports@npm:^7.10.4, @babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.21.4, @babel/helper-module-imports@npm:^7.22.5, @babel/helper-module-imports@npm:^7.24.7": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 languageName: node linkType: hard @@ -1208,26 +1210,14 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.3": + version: 7.26.3 + resolution: "@babel/parser@npm:7.26.3" dependencies: - "@babel/helper-validator-identifier": ^7.24.7 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - picocolors: ^1.0.0 - checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": - version: 7.26.1 - resolution: "@babel/parser@npm:7.26.1" - dependencies: - "@babel/types": ^7.26.0 + "@babel/types": ^7.26.3 bin: parser: ./bin/babel-parser.js - checksum: 354320d1a0a7102b2f25620ceea1bbc809f5225432a73e8a8874009d2f82ed29e2b035fe68fb6d18bb7eafed78df1ec0fa12e8d8226b295d7a020f9b852de653 + checksum: e2bff2e9fa6540ee18fecc058bc74837eda2ddcecbe13454667314a93fc0ba26c1fb862c812d84f6d5f225c3bd8d191c3a42d4296e287a882c4e1f82ff2815ff languageName: node linkType: hard @@ -2546,39 +2536,39 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.3.3": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.22.5, @babel/template@npm:^7.24.7, @babel/template@npm:^7.25.0, @babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": + version: 7.25.9 + resolution: "@babel/template@npm:7.25.9" dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/parser": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + "@babel/code-frame": ^7.25.9 + "@babel/parser": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 103641fea19c7f4e82dc913aa6b6ac157112a96d7c724d513288f538b84bae04fb87b1f1e495ac1736367b1bc30e10f058b30208fb25f66038e1f1eb4e426472 languageName: node linkType: hard -"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.2": - version: 7.25.3 - resolution: "@babel/traverse@npm:7.25.3" +"@babel/traverse@npm:^7.18.9, @babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.24.8, @babel/traverse@npm:^7.25.2, @babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.4.5, @babel/traverse@npm:^7.7.2": + version: 7.26.4 + resolution: "@babel/traverse@npm:7.26.4" dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.0 - "@babel/parser": ^7.25.3 - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.2 + "@babel/code-frame": ^7.26.2 + "@babel/generator": ^7.26.3 + "@babel/parser": ^7.26.3 + "@babel/template": ^7.25.9 + "@babel/types": ^7.26.3 debug: ^4.3.1 globals: ^11.1.0 - checksum: 5661308b1357816f1d4e2813a5dd82c6053617acc08c5c95db051b8b6577d07c4446bc861c9a5e8bf294953ac8266ae13d7d9d856b6b889fc0d34c1f51abbd8c + checksum: dcdf51b27ab640291f968e4477933465c2910bfdcbcff8f5315d1f29b8ff861864f363e84a71fb489f5e9708e8b36b7540608ce019aa5e57ef7a4ba537e62700 languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.0.0-beta.49, @babel/types@npm:^7.12.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.22.5, @babel/types@npm:^7.24.0, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.3, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.3 + resolution: "@babel/types@npm:7.26.3" dependencies: "@babel/helper-string-parser": ^7.25.9 "@babel/helper-validator-identifier": ^7.25.9 - checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d + checksum: 195f428080dcaadbcecc9445df7f91063beeaa91b49ccd78f38a5af6b75a6a58391d0c6614edb1ea322e57889a1684a0aab8e667951f820196901dd341f931e9 languageName: node linkType: hard @@ -3699,6 +3689,91 @@ __metadata: languageName: node linkType: hard +"@grafana/faro-bundlers-shared@npm:^0.1.1": + version: 0.1.1 + resolution: "@grafana/faro-bundlers-shared@npm:0.1.1" + dependencies: + ansis: ^3.2.0 + node-tar: ^1.0.0 + tar: ^7.1.0 + checksum: 9fad0bc423bfd632aecd625d24260c2c77cd56157229bbc054835187b4eda0be4b1b1602bf0378bc8d2ed66907c1b1a82c2f35d49f1f3035432211a4242cd76e + languageName: node + linkType: hard + +"@grafana/faro-core@npm:^1.12.2": + version: 1.12.2 + resolution: "@grafana/faro-core@npm:1.12.2" + dependencies: + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/otlp-transformer": ^0.53.0 + checksum: b7a6b54728b641436de7fa7c0303ee711c0e43c3c23f7999acd9e86f77fbbab0633a0582ed7fa61747a28090e992e179a8d629db006ea9fd4baf9cacd6047fa0 + languageName: node + linkType: hard + +"@grafana/faro-react@npm:^1.12.2": + version: 1.12.2 + resolution: "@grafana/faro-react@npm:1.12.2" + dependencies: + "@grafana/faro-web-sdk": ^1.12.2 + "@grafana/faro-web-tracing": ^1.12.2 + hoist-non-react-statics: ^3.3.2 + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-router-dom: ^4.0.0 || ^5.0.0 || ^6.0.0 + peerDependenciesMeta: + react-dom: + optional: true + react-router-dom: + optional: true + checksum: ecbcfe6e1537e95739ecca17742c24b545fc7c7cab6379dd808fbafdc771651aa16ad3be387fd3724eba225946da72eb47a4c8cda16193598e77c3f13016bbba + languageName: node + linkType: hard + +"@grafana/faro-web-sdk@npm:^1.12.2": + version: 1.12.2 + resolution: "@grafana/faro-web-sdk@npm:1.12.2" + dependencies: + "@grafana/faro-core": ^1.12.2 + ua-parser-js: ^1.0.32 + web-vitals: ^4.0.1 + checksum: 7beaa588ca42871696e58ad781a934b905190ee5d76ef0c82dff19a0d1f5aca98b712d46353abf72835148cb638397d3b70fa98c721eda5744e1df22d12e1836 + languageName: node + linkType: hard + +"@grafana/faro-web-tracing@npm:^1.12.2": + version: 1.12.2 + resolution: "@grafana/faro-web-tracing@npm:1.12.2" + dependencies: + "@grafana/faro-web-sdk": ^1.12.2 + "@opentelemetry/api": ^1.9.0 + "@opentelemetry/context-zone": 1.26.0 + "@opentelemetry/core": ^1.26.0 + "@opentelemetry/exporter-trace-otlp-http": ^0.53.0 + "@opentelemetry/instrumentation": ^0.53.0 + "@opentelemetry/instrumentation-fetch": ^0.53.0 + "@opentelemetry/instrumentation-xml-http-request": ^0.53.0 + "@opentelemetry/otlp-transformer": ^0.53.0 + "@opentelemetry/resources": ^1.26.0 + "@opentelemetry/sdk-trace-web": ^1.26.0 + "@opentelemetry/semantic-conventions": ^1.27.0 + checksum: b86d7ee6479534a3016439d094c9120c71181466fb7e4726dfce088b7a2844a8a0006ed03e4d92b4331ac1f821929da64cd0199cb2e4329dbe86c400dadd87e6 + languageName: node + linkType: hard + +"@grafana/faro-webpack-plugin@npm:^0.1.1": + version: 0.1.1 + resolution: "@grafana/faro-webpack-plugin@npm:0.1.1" + dependencies: + "@grafana/faro-bundlers-shared": ^0.1.1 + "@rollup/plugin-babel": ^6.0.4 + "@rollup/plugin-node-resolve": ^15.2.3 + cross-fetch: ^4.0.0 + webpack: ^5.89.0 + checksum: 1ba39c8bfc8e48b3aa26b604fd5e0e52c55288bf71748462b43edff38e722d717e331e86a5d2373b089d4abc4adc261d525a0e72bedc64bdd1424ee25957f6ea + languageName: node + linkType: hard + "@hapi/hoek@npm:^9.0.0, @hapi/hoek@npm:^9.3.0": version: 9.3.0 resolution: "@hapi/hoek@npm:9.3.0" @@ -3804,6 +3879,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: ^7.0.4 + checksum: 5d36d289960e886484362d9eb6a51d1ea28baed5f5d0140bbe62b99bac52eaf06cc01c2bc0d3575977962f84f6b2c4387b043ee632216643d4787b0999465bf2 + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -4494,18 +4578,6 @@ __metadata: languageName: node linkType: hard -"@newrelic/browser-agent@npm:^1.255.0": - version: 1.255.0 - resolution: "@newrelic/browser-agent@npm:1.255.0" - dependencies: - core-js: ^3.26.0 - fflate: ^0.7.4 - rrweb: 2.0.0-alpha.11 - web-vitals: ^3.1.0 - checksum: 33c91b16e8db6ffc28a376b85bd69ba76d69427e6265162d6f1c7d2c3e9e7a862d041242823996383cb117816da0373380e9eda79b818a9d530b757d2b6d09f6 - languageName: node - linkType: hard - "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -4687,6 +4759,15 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/api-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/api-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 3383ff75f94a77402370a655f8edf049f9864ad60140f70821a1b775ce43bdb9ca6fade533a1faf46dbca19f3189bcbf1f8805062f5a68bfe2a00281b1712d1f + languageName: node + linkType: hard + "@opentelemetry/api-logs@npm:0.54.2": version: 0.54.2 resolution: "@opentelemetry/api-logs@npm:0.54.2" @@ -4696,26 +4777,19 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.9.0": - version: 1.9.0 - resolution: "@opentelemetry/api@npm:1.9.0" - checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 +"@opentelemetry/api-logs@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/api-logs@npm:0.57.0" + dependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 1ad2686091f018bb77cba1870b3aebaf1aa7b14c6c84ec8c3d3860947fea0fe1716345e18cd357c41ce1e8e262551053aaaa949bf4ca4dc0c8bc7ebc24cc947d languageName: node linkType: hard -"@opentelemetry/auto-instrumentations-web@npm:^0.42.0": - version: 0.42.0 - resolution: "@opentelemetry/auto-instrumentations-web@npm:0.42.0" - dependencies: - "@opentelemetry/instrumentation": ^0.54.0 - "@opentelemetry/instrumentation-document-load": ^0.41.0 - "@opentelemetry/instrumentation-fetch": ^0.54.0 - "@opentelemetry/instrumentation-user-interaction": ^0.41.0 - "@opentelemetry/instrumentation-xml-http-request": ^0.54.0 - peerDependencies: - "@opentelemetry/api": ^1.3.0 - zone.js: ^0.11.4 || ^0.13.0 || ^0.14.0 - checksum: 3f0e5c9273f27ac8833ce1fa000715548beaebcc0edee1dff129a5400de058b5607050e67e0cb41a5517d72098a2c6b7651f99f4db3ce1e78ea0e52e87920752 +"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 9e88e59d53ced668f3daaecfd721071c5b85a67dd386f1c6f051d1be54375d850016c881f656ffbe9a03bedae85f7e89c2f2b635313f9c9b195ad033cdc31020 languageName: node linkType: hard @@ -4728,27 +4802,58 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/context-zone-peer-dep@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/context-zone-peer-dep@npm:1.27.0" +"@opentelemetry/context-zone-peer-dep@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/context-zone-peer-dep@npm:1.26.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" zone.js: ^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 - checksum: 173f4fc06ea62e97593bae9f1d064bb28da5dedf408356527f70ef3f9ee45dcc43fa4593aaa870232b2dbd485a982cf4234f6b4282c7e62a40bc4a2ff5eab718 + checksum: 323414617211973b21e0ea72995ffd4e91b4efb1474090e95e0de89fafc736a95146b5d733fd79626e7b9f47a4bd44dd24f91d7679b2805b387d9d9233bba118 languageName: node linkType: hard -"@opentelemetry/context-zone@npm:^1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/context-zone@npm:1.27.0" +"@opentelemetry/context-zone-peer-dep@npm:1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/context-zone-peer-dep@npm:1.30.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + zone.js: ^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 + checksum: d4f3196d4a9b05118bbd164edb12d34cb68d807ca1329e5b0778692b31681990f5fdec97c4c9c5142ec65fc2425762e504abfc258fcc822cafdd2ebcdb171b23 + languageName: node + linkType: hard + +"@opentelemetry/context-zone@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/context-zone@npm:1.26.0" dependencies: - "@opentelemetry/context-zone-peer-dep": 1.27.0 + "@opentelemetry/context-zone-peer-dep": 1.26.0 zone.js: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 - checksum: c24c487bd00f4f7df50e7e767058a8583bb283c501c4ed6a059fad9193bec18d32c4498083117644829a787c46cd6af6c9f42f0e6a4157f0ce3bb69c3528ee04 + checksum: 1c53fbc6416435a41e3e2de52df413e7967637a9f7fa0630a53bfd14e6c787f42707dd8d6d080dd1cde801ae79d216a18e8f703d4096eaf300f00e63d4509158 languageName: node linkType: hard -"@opentelemetry/core@npm:1.27.0, @opentelemetry/core@npm:^1.27.0, @opentelemetry/core@npm:^1.8.0": +"@opentelemetry/context-zone@npm:^1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/context-zone@npm:1.30.0" + dependencies: + "@opentelemetry/context-zone-peer-dep": 1.30.0 + zone.js: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 + checksum: 5799a8cf4f522b47852b1a304d1945dd5411193ccc42a15eee3caeab36348d1e6589ac7548deadd8782a78338c45dbc753324ee07ba0514fbcf200cd6663f598 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" + dependencies: + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: e5b06b4d69605927b850109c6b898f00a6a921171b3bf62335a4e00b9a170c1b93ddef6d7f8cc480a551faeaf81074b594f4462a91d4fbc4b313e64ff9ebd717 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/core@npm:1.27.0" dependencies: @@ -4759,18 +4864,29 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/exporter-metrics-otlp-http@npm:^0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-metrics-otlp-http@npm:0.54.2" +"@opentelemetry/core@npm:1.30.0, @opentelemetry/core@npm:^1.26.0, @opentelemetry/core@npm:^1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/core@npm:1.30.0" dependencies: - "@opentelemetry/core": 1.27.0 - "@opentelemetry/otlp-exporter-base": 0.54.2 - "@opentelemetry/otlp-transformer": 0.54.2 - "@opentelemetry/resources": 1.27.0 - "@opentelemetry/sdk-metrics": 1.27.0 + "@opentelemetry/semantic-conventions": 1.28.0 peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: c55d88f1b8e2e8ae4adcd4c1ac7846f13a91bca150e16b90270a00d1b0cc177c115b3876527122d7f0f1ce3cb6a6f8176b96071cd4e210cadcc0a74821d6e9c3 + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 7c29a860f25e13922a9922437155399bfa4ed2f3ed88e6d7e643994b16b919c9462fdb0bb7e599ba6b78e615158ace1a0dbfcf0e60cefab645c25ec8a4b6aa31 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-http@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.53.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/otlp-exporter-base": 0.53.0 + "@opentelemetry/otlp-transformer": 0.53.0 + "@opentelemetry/resources": 1.26.0 + "@opentelemetry/sdk-trace-base": 1.26.0 + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 647cd28b39cdc8de6958d14d70ee5b58b57fa8441b25e82c15b47be424186eabcf6b772e7fbd4dd86ee4617ddb0166d622fb68f950e0db242ab6e7ae4d07837b languageName: node linkType: hard @@ -4789,31 +4905,32 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/instrumentation-document-load@npm:^0.41.0": - version: 0.41.0 - resolution: "@opentelemetry/instrumentation-document-load@npm:0.41.0" +"@opentelemetry/exporter-trace-otlp-http@npm:^0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.57.0" dependencies: - "@opentelemetry/core": ^1.8.0 - "@opentelemetry/instrumentation": ^0.54.0 - "@opentelemetry/sdk-trace-web": ^1.15.0 - "@opentelemetry/semantic-conventions": ^1.27.0 + "@opentelemetry/core": 1.30.0 + "@opentelemetry/otlp-exporter-base": 0.57.0 + "@opentelemetry/otlp-transformer": 0.57.0 + "@opentelemetry/resources": 1.30.0 + "@opentelemetry/sdk-trace-base": 1.30.0 peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 5b17317924f76c9877958b83d2c575db295cb8051b2ec8c1ab738d8d2106a059942606bb31e11a7dbff5453516bf360401cb32f6ab552dc461e54d2e130d9b09 + checksum: e4d26b81e86d2f50c96a1410fbbe04a6576f431c59b34dcc6a932ce254cb3aeeec4bbd01c0c61285ca688ef8739d30636005a827feba21ccbbea657ccca2cc0e languageName: node linkType: hard -"@opentelemetry/instrumentation-fetch@npm:^0.54.0": - version: 0.54.2 - resolution: "@opentelemetry/instrumentation-fetch@npm:0.54.2" +"@opentelemetry/instrumentation-fetch@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation-fetch@npm:0.53.0" dependencies: - "@opentelemetry/core": 1.27.0 - "@opentelemetry/instrumentation": 0.54.2 - "@opentelemetry/sdk-trace-web": 1.27.0 + "@opentelemetry/core": 1.26.0 + "@opentelemetry/instrumentation": 0.53.0 + "@opentelemetry/sdk-trace-web": 1.26.0 "@opentelemetry/semantic-conventions": 1.27.0 peerDependencies: - "@opentelemetry/api": ^1.3.0 - checksum: de0cd3069a598ae2a1f82da01b8ed92d08658b6d9d3a761f8c311dfc25cf2a1fa446fbff6d631f79dfdc3472cabcbfe473469c787443a5f985597ab2c468a149 + "@opentelemetry/api": ^1.0.0 + checksum: 2c92c9ccccfa424adb3773424df42d64156b67bdbcc1a21fbe5f620370d68bbd64701279897a0807e0b259b4e7a9fdcfdc21fa064343793c592bd0d08c5483cf languageName: node linkType: hard @@ -4832,35 +4949,37 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/instrumentation-user-interaction@npm:^0.41.0": - version: 0.41.0 - resolution: "@opentelemetry/instrumentation-user-interaction@npm:0.41.0" +"@opentelemetry/instrumentation-xml-http-request@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation-xml-http-request@npm:0.53.0" dependencies: - "@opentelemetry/core": ^1.8.0 - "@opentelemetry/instrumentation": ^0.54.0 - "@opentelemetry/sdk-trace-web": ^1.8.0 + "@opentelemetry/core": 1.26.0 + "@opentelemetry/instrumentation": 0.53.0 + "@opentelemetry/sdk-trace-web": 1.26.0 + "@opentelemetry/semantic-conventions": 1.27.0 peerDependencies: - "@opentelemetry/api": ^1.3.0 - zone.js: ^0.11.4 || ^0.13.0 || ^0.14.0 - checksum: e9888bd014abe7032337bba12e62ca3bd1dd1bc3961c84a8d18cc5d6cdf02286fc4bc1ac857c056e673741a44703bafe702f70a6dfb617e08bc93b206168bb36 + "@opentelemetry/api": ^1.0.0 + checksum: 61dd00e30fbf4de611a7d1fa63aa8b004a0624c566d043dc9970dcaaef8eeb1f67e39a224bffd0d05c437e0d08371ee569f1d273429c05eb155e8c854e3fa818 languageName: node linkType: hard -"@opentelemetry/instrumentation-xml-http-request@npm:^0.54.0": - version: 0.54.2 - resolution: "@opentelemetry/instrumentation-xml-http-request@npm:0.54.2" +"@opentelemetry/instrumentation@npm:0.53.0, @opentelemetry/instrumentation@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/instrumentation@npm:0.53.0" dependencies: - "@opentelemetry/core": 1.27.0 - "@opentelemetry/instrumentation": 0.54.2 - "@opentelemetry/sdk-trace-web": 1.27.0 - "@opentelemetry/semantic-conventions": 1.27.0 + "@opentelemetry/api-logs": 0.53.0 + "@types/shimmer": ^1.2.0 + import-in-the-middle: ^1.8.1 + require-in-the-middle: ^7.1.1 + semver: ^7.5.2 + shimmer: ^1.2.1 peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: a62ff9c8a6a60ea403e65971804f1ae884a17136f169ffbfd25d10eb22d38088a1f1c687793a365b0468216a9759a70129f14dd953872d01f617c7be4ab8e3e1 + checksum: a386fe066eab71129a6edbc883ab407b1022850e8acc4750029a12e8730588a8b81442d0b008aaddb46f7614af40d19d331e7348790ca2d08ba8eed6d23ffdae languageName: node linkType: hard -"@opentelemetry/instrumentation@npm:0.54.2, @opentelemetry/instrumentation@npm:^0.54.0, @opentelemetry/instrumentation@npm:^0.54.2": +"@opentelemetry/instrumentation@npm:0.54.2, @opentelemetry/instrumentation@npm:^0.54.2": version: 0.54.2 resolution: "@opentelemetry/instrumentation@npm:0.54.2" dependencies: @@ -4876,6 +4995,34 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/instrumentation@npm:^0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/instrumentation@npm:0.57.0" + dependencies: + "@opentelemetry/api-logs": 0.57.0 + "@types/shimmer": ^1.2.0 + import-in-the-middle: ^1.8.1 + require-in-the-middle: ^7.1.1 + semver: ^7.5.2 + shimmer: ^1.2.1 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 3c3284086c63b27e6a45f78ea333dd6977b72a89ee03fcd9c0941a101df02c930e3624409bddccd36d901c3313667b2d6b41ab09d3b0abc64cd0c207963a244a + languageName: node + linkType: hard + +"@opentelemetry/otlp-exporter-base@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.53.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/otlp-transformer": 0.53.0 + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 8c80374c476e7aacf04172d18ffba5ec7ecc33c98dd102f74d22c916f20e147a42038662bc4ec17eaa7b7ffc85f8fde0c72b81b978a7460977fe236fc757207b + languageName: node + linkType: hard + "@opentelemetry/otlp-exporter-base@npm:0.54.2": version: 0.54.2 resolution: "@opentelemetry/otlp-exporter-base@npm:0.54.2" @@ -4888,6 +5035,35 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/otlp-exporter-base@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.57.0" + dependencies: + "@opentelemetry/core": 1.30.0 + "@opentelemetry/otlp-transformer": 0.57.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 5a4bd434febe70e8fe16c013c81d3cb5f1b6e0997c2f9d2d879496565fd4472f73956bf659993daa4dc58a9adaa506ce8e8cbd9c7ec95dade51cae0e39284ac0 + languageName: node + linkType: hard + +"@opentelemetry/otlp-transformer@npm:0.53.0, @opentelemetry/otlp-transformer@npm:^0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/otlp-transformer@npm:0.53.0" + dependencies: + "@opentelemetry/api-logs": 0.53.0 + "@opentelemetry/core": 1.26.0 + "@opentelemetry/resources": 1.26.0 + "@opentelemetry/sdk-logs": 0.53.0 + "@opentelemetry/sdk-metrics": 1.26.0 + "@opentelemetry/sdk-trace-base": 1.26.0 + protobufjs: ^7.3.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 0dbec27a293a70802ae68e5cd75f094477b80e15026bff185acd4c7ce45d28e9964033715a0d909f8e8bd8eda92bd31f2a8e9f4444717e40880334f1341465de + languageName: node + linkType: hard + "@opentelemetry/otlp-transformer@npm:0.54.2": version: 0.54.2 resolution: "@opentelemetry/otlp-transformer@npm:0.54.2" @@ -4905,6 +5081,23 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/otlp-transformer@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/otlp-transformer@npm:0.57.0" + dependencies: + "@opentelemetry/api-logs": 0.57.0 + "@opentelemetry/core": 1.30.0 + "@opentelemetry/resources": 1.30.0 + "@opentelemetry/sdk-logs": 0.57.0 + "@opentelemetry/sdk-metrics": 1.30.0 + "@opentelemetry/sdk-trace-base": 1.30.0 + protobufjs: ^7.3.0 + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 9f53d4689749f3cf2b99fd96bab1b817238887c05f32a30cbf9c64fc34addfc0da22182669636b29dbbd98bca7cbe1810e860260b61bb6dcecbf70d48e43cdd4 + languageName: node + linkType: hard + "@opentelemetry/propagator-b3@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/propagator-b3@npm:1.27.0" @@ -4927,7 +5120,19 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/resources@npm:1.27.0, @opentelemetry/resources@npm:^1.27.0": +"@opentelemetry/resources@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/resources@npm:1.26.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: f70b0fdf4fb00c950bc30084818c92a5339f1be5d709bd681ab14453e877d6bb9f700324b8e65a0eabfeea618d01ed071abf9088e00fa0bf7f3305b1abad22cb + languageName: node + linkType: hard + +"@opentelemetry/resources@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/resources@npm:1.27.0" dependencies: @@ -4939,6 +5144,31 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/resources@npm:1.30.0, @opentelemetry/resources@npm:^1.26.0, @opentelemetry/resources@npm:^1.27.0, @opentelemetry/resources@npm:^1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/resources@npm:1.30.0" + dependencies: + "@opentelemetry/core": 1.30.0 + "@opentelemetry/semantic-conventions": 1.28.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 887b59053680f528c94c16d38d45208cad306fbd687dd66d655566573821ad77b9d8bfa9a409cfd59a1975cccc417dc3303f51f97499247d1a4ea2f987e6c594 + languageName: node + linkType: hard + +"@opentelemetry/sdk-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/sdk-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api-logs": 0.53.0 + "@opentelemetry/core": 1.26.0 + "@opentelemetry/resources": 1.26.0 + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.10.0" + checksum: f36c051f6264786688e3b20b4b1a876e6f7a40166b425efaa6aab12dfe32f2ebbcc5bea1662631b2b17016ec5cf9205798219c896234828503477b144b02342e + languageName: node + linkType: hard + "@opentelemetry/sdk-logs@npm:0.54.2": version: 0.54.2 resolution: "@opentelemetry/sdk-logs@npm:0.54.2" @@ -4952,7 +5182,32 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/sdk-metrics@npm:1.27.0, @opentelemetry/sdk-metrics@npm:^1.27.0": +"@opentelemetry/sdk-logs@npm:0.57.0": + version: 0.57.0 + resolution: "@opentelemetry/sdk-logs@npm:0.57.0" + dependencies: + "@opentelemetry/api-logs": 0.57.0 + "@opentelemetry/core": 1.30.0 + "@opentelemetry/resources": 1.30.0 + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.10.0" + checksum: a637a7dc90f55387740fd13defb309eac03585e2400fd5ebd81fe894072a886e0c2fd1038d1f650d9f9640bf4822073b4bc14cea9be96f3ae0b77d37fadb8977 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.26.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/resources": 1.26.0 + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: c7fd09991bc28c4cfa0eef2e75a9fcfd1465638327e50ce55fb7631c9e333ae27c7c4bfbb4875c8fbb60f94bb60a307af157a898ea21f13fef967ab5e1146ed5 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/sdk-metrics@npm:1.27.0" dependencies: @@ -4964,7 +5219,32 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/sdk-trace-base@npm:1.27.0, @opentelemetry/sdk-trace-base@npm:^1.27.0": +"@opentelemetry/sdk-metrics@npm:1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/sdk-metrics@npm:1.30.0" + dependencies: + "@opentelemetry/core": 1.30.0 + "@opentelemetry/resources": 1.30.0 + peerDependencies: + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 87c64c29e45b7859282a32acb7396f1acb46028141dd113475440a54ca33793da2068e5f03766d5223768b78c0f8d3440530e0906562a6d1a95f9072ea6c9eaa + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.26.0" + dependencies: + "@opentelemetry/core": 1.26.0 + "@opentelemetry/resources": 1.26.0 + "@opentelemetry/semantic-conventions": 1.27.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: a4f4ddf644fd0d79b2bd49e4377143688d2aa657643a470d8bed6696f26817598fb4e9f16ba2d8c237292af56f06eec56594a7b4cc417d4ea7e490a45a22113b + languageName: node + linkType: hard + +"@opentelemetry/sdk-trace-base@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/sdk-trace-base@npm:1.27.0" dependencies: @@ -4977,6 +5257,19 @@ __metadata: languageName: node linkType: hard +"@opentelemetry/sdk-trace-base@npm:1.30.0, @opentelemetry/sdk-trace-base@npm:^1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/sdk-trace-base@npm:1.30.0" + dependencies: + "@opentelemetry/core": 1.30.0 + "@opentelemetry/resources": 1.30.0 + "@opentelemetry/semantic-conventions": 1.28.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 901e1afca9a1b8e042e0451bb2f31b00cc1a3e6408aa0f8432e022cf52293ee92bff5cb26f0e78fe435940c3e957862c4a9d3e95d223c2c52134dd0049beaaa1 + languageName: node + linkType: hard + "@opentelemetry/sdk-trace-node@npm:^1.27.0": version: 1.27.0 resolution: "@opentelemetry/sdk-trace-node@npm:1.27.0" @@ -4993,26 +5286,46 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/sdk-trace-web@npm:1.27.0, @opentelemetry/sdk-trace-web@npm:^1.15.0, @opentelemetry/sdk-trace-web@npm:^1.27.0, @opentelemetry/sdk-trace-web@npm:^1.8.0": - version: 1.27.0 - resolution: "@opentelemetry/sdk-trace-web@npm:1.27.0" +"@opentelemetry/sdk-trace-web@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/sdk-trace-web@npm:1.26.0" dependencies: - "@opentelemetry/core": 1.27.0 - "@opentelemetry/sdk-trace-base": 1.27.0 + "@opentelemetry/core": 1.26.0 + "@opentelemetry/sdk-trace-base": 1.26.0 "@opentelemetry/semantic-conventions": 1.27.0 peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 7c5c354fc9400adef70e6f169edd61a11ebcd36ca15993b366e8f6cfb296f248786be41d327ca971ad4f24b6623a5b8af2fb88fd760af6419c6313a7288ed6f9 + checksum: d8e0ae8f9088723fc250874290923dc81933b279958f04beb79ca7e312bf66a79b823d92dd06be4e707d6919030c2998f8a18167a47ee7281e573b3ef3cc9e10 languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.27.0, @opentelemetry/semantic-conventions@npm:^1.27.0": +"@opentelemetry/sdk-trace-web@npm:^1.26.0, @opentelemetry/sdk-trace-web@npm:^1.30.0": + version: 1.30.0 + resolution: "@opentelemetry/sdk-trace-web@npm:1.30.0" + dependencies: + "@opentelemetry/core": 1.30.0 + "@opentelemetry/sdk-trace-base": 1.30.0 + "@opentelemetry/semantic-conventions": 1.28.0 + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 935862222f7a5cb35fe674fc3c4a174332a27e645f3dca259828c5fad7840afcea07756c0e32ec3d8e725100cea665680f5d86de2b1acfba6f62142dd712e790 + languageName: node + linkType: hard + +"@opentelemetry/semantic-conventions@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" checksum: 26d85f8d13c8c64024f7a84528cff41d56afc9829e7ff8a654576404f8b2c1a9c264adcc6fa5a9551bacdd938a4a464041fa9493e0a722e5605f2c2ae6752398 languageName: node linkType: hard +"@opentelemetry/semantic-conventions@npm:1.28.0, @opentelemetry/semantic-conventions@npm:^1.27.0, @opentelemetry/semantic-conventions@npm:^1.28.0": + version: 1.28.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.28.0" + checksum: 1d708afa654990236cdb6b5da84f7ab899b70bff9f753bc49d93616a5c7f7f339ba1eba6a9fbb57dee596995334f4e7effa57a4624741882ab5b3c419c3511e2 + languageName: node + linkType: hard + "@peculiar/asn1-schema@npm:^2.3.6": version: 2.3.6 resolution: "@peculiar/asn1-schema@npm:2.3.6" @@ -5046,6 +5359,13 @@ __metadata: languageName: node linkType: hard +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f + languageName: node + linkType: hard + "@pkgr/utils@npm:^2.3.1": version: 2.4.2 resolution: "@pkgr/utils@npm:2.4.2" @@ -7964,6 +8284,25 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-babel@npm:^6.0.4": + version: 6.0.4 + resolution: "@rollup/plugin-babel@npm:6.0.4" + dependencies: + "@babel/helper-module-imports": ^7.18.6 + "@rollup/pluginutils": ^5.0.1 + peerDependencies: + "@babel/core": ^7.0.0 + "@types/babel__core": ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + "@types/babel__core": + optional: true + rollup: + optional: true + checksum: c035fd7814ad75b9b584727fe31c86611697be88abd2a4ac836c17fa42a241de46f698c225d9c4e65336374fb19e48a1e9a22cc374a0cc0b867c3970eb62b2f2 + languageName: node + linkType: hard + "@rollup/plugin-commonjs@npm:^22.0.0": version: 22.0.2 resolution: "@rollup/plugin-commonjs@npm:22.0.2" @@ -8011,6 +8350,24 @@ __metadata: languageName: node linkType: hard +"@rollup/plugin-node-resolve@npm:^15.2.3": + version: 15.3.1 + resolution: "@rollup/plugin-node-resolve@npm:15.3.1" + dependencies: + "@rollup/pluginutils": ^5.0.1 + "@types/resolve": 1.20.2 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.22.1 + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 2973db4da0e7ed97c35a8dd8878ed6b6781bcb03d72039f064d878f711b0290446348c5268aa1359d064787adc0d5cc35f662d35ea5a4fa9b0b3f9f17c678f41 + languageName: node + linkType: hard + "@rollup/plugin-replace@npm:^2.4.1": version: 2.4.2 resolution: "@rollup/plugin-replace@npm:2.4.2" @@ -8174,7 +8531,7 @@ __metadata: languageName: node linkType: hard -"@rrweb/types@npm:^2.0.0-alpha.11, @rrweb/types@npm:^2.0.0-alpha.13": +"@rrweb/types@npm:^2.0.0-alpha.13": version: 2.0.0-alpha.17 resolution: "@rrweb/types@npm:2.0.0-alpha.17" dependencies: @@ -8285,23 +8642,6 @@ __metadata: languageName: node linkType: hard -"@sentry/cli@npm:^1.74.4": - version: 1.74.4 - resolution: "@sentry/cli@npm:1.74.4" - dependencies: - https-proxy-agent: ^5.0.0 - mkdirp: ^0.5.5 - node-fetch: ^2.6.7 - npmlog: ^4.1.2 - progress: ^2.0.3 - proxy-from-env: ^1.1.0 - which: ^2.0.2 - bin: - sentry-cli: bin/sentry-cli - checksum: 6fe63095edbb0f8c250ad813e24fddd65b3266763fbf628cfd865d2f68f7248ec38e600f220d6530a54ebf1a10cc51e1b5fbf203e28fab223d80a5afd4d5dfb2 - languageName: node - linkType: hard - "@sentry/core@npm:6.2.4": version: 6.2.4 resolution: "@sentry/core@npm:6.2.4" @@ -8370,15 +8710,6 @@ __metadata: languageName: node linkType: hard -"@sentry/webpack-plugin@npm:^1.18.9": - version: 1.18.9 - resolution: "@sentry/webpack-plugin@npm:1.18.9" - dependencies: - "@sentry/cli": ^1.74.4 - checksum: ff6edfebddd45a9d77686fe118661428ad309207b0ea6d579e38ea7edd0c390e7c84deb9e755bb0b5b118d628890e5be2146ace8c8ae72444d9d054c9c032a6d - languageName: node - linkType: hard - "@shared/ast@workspace:^, @shared/ast@workspace:packages/ast": version: 0.0.0-use.local resolution: "@shared/ast@workspace:packages/ast" @@ -11111,6 +11442,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:1.20.2": + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 61c2cad2499ffc8eab36e3b773945d337d848d3ac6b7b0a87c805ba814bc838ef2f262fc0f109bfd8d2e0898ff8bd80ad1025f9ff64f1f71d3d4294c9f14e5f6 + languageName: node + linkType: hard + "@types/resolve@npm:^1.20.2": version: 1.20.6 resolution: "@types/resolve@npm:1.20.6" @@ -12642,13 +12980,6 @@ __metadata: languageName: node linkType: hard -"ansi-regex@npm:^2.0.0": - version: 2.1.1 - resolution: "ansi-regex@npm:2.1.1" - checksum: 190abd03e4ff86794f338a31795d262c1dfe8c91f7e01d04f13f646f1dcb16c5800818f886047876f1272f065570ab86b24b99089f8b68a0e11ff19aed4ca8f1 - languageName: node - linkType: hard - "ansi-regex@npm:^4.1.0": version: 4.1.1 resolution: "ansi-regex@npm:4.1.1" @@ -12702,6 +13033,13 @@ __metadata: languageName: node linkType: hard +"ansis@npm:^3.2.0": + version: 3.4.0 + resolution: "ansis@npm:3.4.0" + checksum: 828ad5a8235ff9e745b9b16e7f8f42efc86943cd2ca8fd253a5a18497a573bb2a5d2abdce8c86805c94b67b9a29d9802a27d5299f04e97775d948ba9363ddd78 + languageName: node + linkType: hard + "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -12803,22 +13141,21 @@ __metadata: "@github/g-emoji-element": ^1.1.5 "@googlemaps/markerclusterer": ^2.0.14 "@googlemaps/react-wrapper": ^1.1.35 + "@grafana/faro-react": ^1.12.2 + "@grafana/faro-web-tracing": ^1.12.2 + "@grafana/faro-webpack-plugin": ^0.1.1 "@manaflair/redux-batch": ^1.0.0 "@mantine/hooks": ^5.10.1 - "@newrelic/browser-agent": ^1.255.0 "@octokit/rest": ^20.0.1 "@opentelemetry/api": ^1.9.0 - "@opentelemetry/auto-instrumentations-web": ^0.42.0 - "@opentelemetry/context-zone": ^1.27.0 - "@opentelemetry/core": ^1.27.0 - "@opentelemetry/exporter-metrics-otlp-http": ^0.54.2 - "@opentelemetry/exporter-trace-otlp-http": ^0.54.2 - "@opentelemetry/instrumentation": ^0.54.2 - "@opentelemetry/resources": ^1.27.0 - "@opentelemetry/sdk-metrics": ^1.27.0 - "@opentelemetry/sdk-trace-base": ^1.27.0 - "@opentelemetry/sdk-trace-web": ^1.27.0 - "@opentelemetry/semantic-conventions": ^1.27.0 + "@opentelemetry/context-zone": ^1.30.0 + "@opentelemetry/core": ^1.30.0 + "@opentelemetry/exporter-trace-otlp-http": ^0.57.0 + "@opentelemetry/instrumentation": ^0.57.0 + "@opentelemetry/resources": ^1.30.0 + "@opentelemetry/sdk-trace-base": ^1.30.0 + "@opentelemetry/sdk-trace-web": ^1.30.0 + "@opentelemetry/semantic-conventions": ^1.28.0 "@peculiar/webcrypto": ^1.4.3 "@react-spring/web": ^9.7.4 "@react-types/shared": ^3.23.0 @@ -12827,7 +13164,6 @@ __metadata: "@reduxjs/toolkit": ^2.4.0 "@segment/analytics-next": ^1.76.0 "@sentry/react": ^6.2.4 - "@sentry/webpack-plugin": ^1.18.9 "@shared/ast": "workspace:^" "@shared/dsl": "workspace:^" "@simonsmith/cypress-image-snapshot": ^9.1.0 @@ -13087,13 +13423,6 @@ __metadata: languageName: unknown linkType: soft -"aproba@npm:^1.0.3": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc - languageName: node - linkType: hard - "aproba@npm:^1.0.3 || ^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -13125,16 +13454,6 @@ __metadata: languageName: node linkType: hard -"are-we-there-yet@npm:~1.1.2": - version: 1.1.7 - resolution: "are-we-there-yet@npm:1.1.7" - dependencies: - delegates: ^1.0.0 - readable-stream: ^2.0.6 - checksum: 70d251719c969b2745bfe5ddf3ebaefa846a636e90a6d5212573676af5d6670e15457761d4725731e19cbebdce42c4ab0cbedf23ab047f2a08274985aa10a3c7 - languageName: node - linkType: hard - "arg@npm:5.0.2, arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" @@ -14835,6 +15154,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: fd73a4bab48b79e66903fe1cafbdc208956f41ea4f856df883d0c7277b7ab29fd33ee65f93b2ec9192fc0169238f2f8307b7735d27c155821d886b84aa97aa8d + languageName: node + linkType: hard + "chromatic@npm:^11.3.0, chromatic@npm:^11.4.0": version: 11.5.6 resolution: "chromatic@npm:11.5.6" @@ -15098,13 +15424,6 @@ __metadata: languageName: node linkType: hard -"code-point-at@npm:^1.0.0": - version: 1.1.0 - resolution: "code-point-at@npm:1.1.0" - checksum: 17d5666611f9b16d64fdf48176d9b7fb1c7d1c1607a189f7e600040a11a6616982876af148230336adb7d8fe728a559f743a4e29db3747e3b1a32fa7f4529681 - languageName: node - linkType: hard - "codemirror-graphql@npm:^1.2.14": version: 1.3.2 resolution: "codemirror-graphql@npm:1.3.2" @@ -15434,7 +15753,7 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0": +"console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed @@ -15549,7 +15868,7 @@ __metadata: languageName: node linkType: hard -"core-js@npm:^3.0.1, core-js@npm:^3.19.2, core-js@npm:^3.26.0, core-js@npm:^3.9.1": +"core-js@npm:^3.0.1, core-js@npm:^3.19.2, core-js@npm:^3.9.1": version: 3.36.1 resolution: "core-js@npm:3.36.1" checksum: 6f6c152179bd0673da34e67a82c6a5c37f31f9fbe908e9caf93749dc62a25b6e07fbff2411de3b74bb2d0661b7f9fb247115ba8efabf9904f5fef26edead515e @@ -15732,6 +16051,15 @@ __metadata: languageName: node linkType: hard +"cross-fetch@npm:^4.0.0": + version: 4.1.0 + resolution: "cross-fetch@npm:4.1.0" + dependencies: + node-fetch: ^2.7.0 + checksum: c02fa85d59f83e50dbd769ee472c9cc984060c403ee5ec8654659f61a525c1a655eef1c7a35e365c1a107b4e72d76e786718b673d1cb3c97f61d4644cb0a9f9d + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.5 resolution: "cross-spawn@npm:7.0.5" @@ -18864,13 +19192,6 @@ __metadata: languageName: node linkType: hard -"fflate@npm:^0.7.4": - version: 0.7.4 - resolution: "fflate@npm:0.7.4" - checksum: b812ab26047432db70ff4c73eb45ad53bd0774575b4818b9c61c2921e89ec65d1259f06ec1618f2ac55e6a2f2e29b6dc09173d213b46580bc69efae5344bf8f1 - languageName: node - linkType: hard - "figmagic@npm:^4.5.13": version: 4.5.13 resolution: "figmagic@npm:4.5.13" @@ -19581,22 +19902,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:~2.7.3": - version: 2.7.4 - resolution: "gauge@npm:2.7.4" - dependencies: - aproba: ^1.0.3 - console-control-strings: ^1.0.0 - has-unicode: ^2.0.0 - object-assign: ^4.1.0 - signal-exit: ^3.0.0 - string-width: ^1.0.1 - strip-ansi: ^3.0.1 - wide-align: ^1.1.0 - checksum: a89b53cee65579b46832e050b5f3a79a832cc422c190de79c6b8e2e15296ab92faddde6ddf2d376875cbba2b043efa99b9e1ed8124e7365f61b04e3cee9d40ee - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -19768,6 +20073,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.7": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: ^3.1.0 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 + bin: + glob: dist/esm/bin.mjs + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a + languageName: node + linkType: hard + "glob@npm:^11.0.0": version: 11.0.0 resolution: "glob@npm:11.0.0" @@ -20128,7 +20449,7 @@ __metadata: languageName: node linkType: hard -"has-unicode@npm:^2.0.0, has-unicode@npm:^2.0.1": +"has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 @@ -21282,15 +21603,6 @@ __metadata: languageName: node linkType: hard -"is-fullwidth-code-point@npm:^1.0.0": - version: 1.0.0 - resolution: "is-fullwidth-code-point@npm:1.0.0" - dependencies: - number-is-nan: ^1.0.0 - checksum: 4d46a7465a66a8aebcc5340d3b63a56602133874af576a9ca42c6f0f4bd787a743605771c5f246db77da96605fefeffb65fc1dbe862dcc7328f4b4d03edf5a57 - languageName: node - linkType: hard - "is-fullwidth-code-point@npm:^2.0.0": version: 2.0.0 resolution: "is-fullwidth-code-point@npm:2.0.0" @@ -21856,6 +22168,19 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": ^8.0.2 + "@pkgjs/parseargs": ^0.11.0 + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 + languageName: node + linkType: hard + "jackspeak@npm:^4.0.1": version: 4.0.2 resolution: "jackspeak@npm:4.0.2" @@ -23242,12 +23567,12 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" bin: jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + checksum: 19c94095ea026725540c0d29da33ab03144f6bcf2d4159e4833d534976e99e0c09c38cefa9a575279a51fc36b31166f8d6d05c9fe2645d5f15851d690b41f17f languageName: node linkType: hard @@ -24002,6 +24327,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a + languageName: node + linkType: hard + "lru-cache@npm:^11.0.0": version: 11.0.1 resolution: "lru-cache@npm:11.0.1" @@ -25085,7 +25417,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 @@ -25102,6 +25434,16 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" + dependencies: + minipass: ^7.0.4 + rimraf: ^5.0.5 + checksum: da0a53899252380475240c587e52c824f8998d9720982ba5c4693c68e89230718884a209858c156c6e08d51aad35700a3589987e540593c36f6713fe30cd7338 + languageName: node + linkType: hard + "mitt@npm:^3.0.0": version: 3.0.1 resolution: "mitt@npm:3.0.1" @@ -25125,7 +25467,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.5, mkdirp@npm:~0.5.1": +"mkdirp@npm:^0.5.1, mkdirp@npm:~0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" dependencies: @@ -25145,6 +25487,15 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d + languageName: node + linkType: hard + "mochawesome-merge@npm:^4.2.1": version: 4.3.0 resolution: "mochawesome-merge@npm:4.3.0" @@ -25601,6 +25952,13 @@ __metadata: languageName: node linkType: hard +"node-tar@npm:^1.0.0": + version: 1.0.0 + resolution: "node-tar@npm:1.0.0" + checksum: 797af5e13b0b7942590ab2eaac5553c6d82dedc3e348fc3315c761471260f0ff831c355fe582d4b7bcb8a8d9d39ad7910bb5da19261a5c6af7681fe1a1917a60 + languageName: node + linkType: hard + "nodemailer@npm:6.9.9": version: 6.9.9 resolution: "nodemailer@npm:6.9.9" @@ -25684,18 +26042,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^4.1.2": - version: 4.1.2 - resolution: "npmlog@npm:4.1.2" - dependencies: - are-we-there-yet: ~1.1.2 - console-control-strings: ~1.1.0 - gauge: ~2.7.3 - set-blocking: ~2.0.0 - checksum: edbda9f95ec20957a892de1839afc6fb735054c3accf6fbefe767bac9a639fd5cea2baeac6bd2bcd50a85cb54924d57d9886c81c7fbc2332c2ddd19227504192 - languageName: node - linkType: hard - "npmlog@npm:^6.0.0": version: 6.0.2 resolution: "npmlog@npm:6.0.2" @@ -25724,13 +26070,6 @@ __metadata: languageName: node linkType: hard -"number-is-nan@npm:^1.0.0": - version: 1.0.1 - resolution: "number-is-nan@npm:1.0.1" - checksum: 13656bc9aa771b96cef209ffca31c31a03b507ca6862ba7c3f638a283560620d723d52e626d57892c7fff475f4c36ac07f0600f14544692ff595abff214b9ffb - languageName: node - linkType: hard - "nwsapi@npm:^2.2.0, nwsapi@npm:^2.2.2": version: 2.2.13 resolution: "nwsapi@npm:2.2.13" @@ -26494,6 +26833,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: ^10.2.0 + minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 + languageName: node + linkType: hard + "path-scurry@npm:^2.0.0": version: 2.0.0 resolution: "path-scurry@npm:2.0.0" @@ -29611,7 +29960,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": +"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.8, readable-stream@npm:~2.3.6": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" dependencies: @@ -30302,6 +30651,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^5.0.5": + version: 5.0.10 + resolution: "rimraf@npm:5.0.10" + dependencies: + glob: ^10.3.7 + bin: + rimraf: dist/esm/bin.mjs + checksum: 50e27388dd2b3fa6677385fc1e2966e9157c89c86853b96d02e6915663a96b7ff4d590e14f6f70e90f9b554093aa5dbc05ac3012876be558c06a65437337bc05 + languageName: node + linkType: hard + "rimraf@npm:~2.6.2": version: 2.6.3 resolution: "rimraf@npm:2.6.3" @@ -30451,7 +30811,7 @@ __metadata: languageName: node linkType: hard -"rrdom@npm:^2.0.0-alpha.11, rrdom@npm:^2.0.0-alpha.13": +"rrdom@npm:^2.0.0-alpha.13": version: 2.0.0-alpha.17 resolution: "rrdom@npm:2.0.0-alpha.17" dependencies: @@ -30460,7 +30820,7 @@ __metadata: languageName: node linkType: hard -"rrweb-snapshot@npm:^2.0.0-alpha.11, rrweb-snapshot@npm:^2.0.0-alpha.13, rrweb-snapshot@npm:^2.0.0-alpha.17": +"rrweb-snapshot@npm:^2.0.0-alpha.13, rrweb-snapshot@npm:^2.0.0-alpha.17": version: 2.0.0-alpha.17 resolution: "rrweb-snapshot@npm:2.0.0-alpha.17" dependencies: @@ -30469,22 +30829,6 @@ __metadata: languageName: node linkType: hard -"rrweb@npm:2.0.0-alpha.11": - version: 2.0.0-alpha.11 - resolution: "rrweb@npm:2.0.0-alpha.11" - dependencies: - "@rrweb/types": ^2.0.0-alpha.11 - "@types/css-font-loading-module": 0.0.7 - "@xstate/fsm": ^1.4.0 - base64-arraybuffer: ^1.0.1 - fflate: ^0.4.4 - mitt: ^3.0.0 - rrdom: ^2.0.0-alpha.11 - rrweb-snapshot: ^2.0.0-alpha.11 - checksum: f601d1b96f3a3622551b5f12f08d53cee272ebc23a61ed722a8687b2b8cb89ff6f7813a44eaa905afcaadd3e37e6055201474de0bd010720f45ecaaf2a0b4d01 - languageName: node - linkType: hard - "rrweb@npm:2.0.0-alpha.13": version: 2.0.0-alpha.13 resolution: "rrweb@npm:2.0.0-alpha.13" @@ -30868,7 +31212,7 @@ __metadata: languageName: node linkType: hard -"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": +"set-blocking@npm:^2.0.0": version: 2.0.0 resolution: "set-blocking@npm:2.0.0" checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 @@ -31035,7 +31379,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -31702,17 +32046,6 @@ __metadata: languageName: node linkType: hard -"string-width@npm:^1.0.1": - version: 1.0.2 - resolution: "string-width@npm:1.0.2" - dependencies: - code-point-at: ^1.0.0 - is-fullwidth-code-point: ^1.0.0 - strip-ansi: ^3.0.0 - checksum: 5c79439e95bc3bd7233a332c5f5926ab2ee90b23816ed4faa380ce3b2576d7800b0a5bb15ae88ed28737acc7ea06a518c2eef39142dd727adad0e45c776cd37e - languageName: node - linkType: hard - "string-width@npm:^3.0.0, string-width@npm:^3.1.0": version: 3.1.0 resolution: "string-width@npm:3.1.0" @@ -31847,15 +32180,6 @@ __metadata: languageName: node linkType: hard -"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": - version: 3.0.1 - resolution: "strip-ansi@npm:3.0.1" - dependencies: - ansi-regex: ^2.0.0 - checksum: 9b974de611ce5075c70629c00fa98c46144043db92ae17748fb780f706f7a789e9989fd10597b7c2053ae8d1513fd707816a91f1879b2f71e6ac0b6a863db465 - languageName: node - linkType: hard - "strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": version: 5.2.0 resolution: "strip-ansi@npm:5.2.0" @@ -32303,6 +32627,20 @@ __metadata: languageName: node linkType: hard +"tar@npm:^7.1.0": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": ^4.0.0 + chownr: ^3.0.0 + minipass: ^7.1.2 + minizlib: ^3.0.1 + mkdirp: ^3.0.1 + yallist: ^5.0.0 + checksum: 8485350c0688331c94493031f417df069b778aadb25598abdad51862e007c39d1dd5310702c7be4a6784731a174799d8885d2fde0484269aea205b724d7b2ffa + languageName: node + linkType: hard + "tcomb-validation@npm:^3.3.0": version: 3.4.1 resolution: "tcomb-validation@npm:3.4.1" @@ -34020,13 +34358,20 @@ __metadata: languageName: node linkType: hard -"web-vitals@npm:3.5.2, web-vitals@npm:^3.1.0": +"web-vitals@npm:3.5.2": version: 3.5.2 resolution: "web-vitals@npm:3.5.2" checksum: 4c208bb9384073c772055e9265a4cad4560dbbaeb111ec615ee23e71bbb952aacdf4e6bb8ffbfbe02b23540ac4f08d569d49fc0cd1e5d29c6c0ced566965320a languageName: node linkType: hard +"web-vitals@npm:^4.0.1": + version: 4.2.4 + resolution: "web-vitals@npm:4.2.4" + checksum: 5b3ffe1db33f23aebf8cc8560ac574401a95939baafde5841835c1bb1c01f9a2478442f319f77aa0d7914739fc2f6b020c5d5b128c16c5c77ca6be2f9dfbbde6 + languageName: node + linkType: hard + "webcrypto-core@npm:^1.7.7": version: 1.7.7 resolution: "webcrypto-core@npm:1.7.7" @@ -34447,7 +34792,7 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.0, wide-align@npm:^1.1.5": +"wide-align@npm:^1.1.5": version: 1.1.5 resolution: "wide-align@npm:1.1.5" dependencies: @@ -34918,6 +35263,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: eba51182400b9f35b017daa7f419f434424410691bbc5de4f4240cc830fdef906b504424992700dc047f16b4d99100a6f8b8b11175c193f38008e9c96322b6a5 + languageName: node + linkType: hard + "yaml@npm:2.3.1, yaml@npm:^2.1.1": version: 2.3.1 resolution: "yaml@npm:2.3.1" @@ -35101,6 +35453,13 @@ __metadata: languageName: node linkType: hard +"zone.js@npm:^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0": + version: 0.15.0 + resolution: "zone.js@npm:0.15.0" + checksum: 8cb8f99c0aa18dfc684b891576d9400385da94a342128ee998accf23cbd21d5e7d9e7a76e623872eb7a300a6d388c181dde575f39d2d9bf46d0af2310024e605 + languageName: node + linkType: hard + "zrender@npm:5.4.3": version: 5.4.3 resolution: "zrender@npm:5.4.3" diff --git a/deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs b/deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs index 8da1ef22ad2..c2d05cff933 100644 --- a/deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs +++ b/deploy/docker/fs/opt/appsmith/caddy-reconfigure.mjs @@ -38,14 +38,6 @@ if (CUSTOM_DOMAIN !== "") { const frameAncestorsPolicy = (process.env.APPSMITH_ALLOWED_FRAME_ANCESTORS || "'self'") .replace(/;.*$/, "") -const monitoringParts = [{ - path: "/monitoring/traces", - rewrite: "/v1/traces", -}, { - path: "/monitoring/metrics", - rewrite: "/v1/metrics", -}]; - const parts = [] parts.push(` @@ -147,20 +139,6 @@ parts.push(` import reverse_proxy 8091 } -${ - monitoringParts.map((telemetry) => ` - handle ${telemetry.path} { - @unauthorized not header api-key "${process.env.APPSMITH_NEW_RELIC_OTLP_LICENSE_KEY}" - respond @unauthorized "Forbidden" 403 - - @method_not_allowed not method POST - respond @method_not_allowed "Method Not Allowed" 405 - - rewrite * ${telemetry.rewrite} - import reverse_proxy 4318 - }`).join("\n") -} - redir /supervisor /supervisor/ handle_path /supervisor/* { import reverse_proxy 9001 @@ -246,6 +224,7 @@ function finalizeHtmlFiles() { APPSMITH_VERSION_ID: info?.version ?? "", APPSMITH_VERSION_SHA: info?.commitSha ?? "", APPSMITH_VERSION_RELEASE_DATE: info?.imageBuiltAt ?? "", + APPSMITH_HOSTNAME: process.env.HOSTNAME ?? "appsmith-0" } for (const file of ["index.html", "404.html"]) {