diff --git a/gabinete-digital-fo.code-workspace b/gabinete-digital-fo.code-workspace index caff7bd1a..847fc7252 100644 --- a/gabinete-digital-fo.code-workspace +++ b/gabinete-digital-fo.code-workspace @@ -1,21 +1,23 @@ { "folders": [ { + "name": "gabinete-digital-fo", "path": "." }, { + "name": "socket-server", "path": "../socket-server" }, { + "name": "logs", "path": "../logs" }, { + "name": "opentelemetry-js-main", "path": "../../../Downloads/opentelemetry-js-main/opentelemetry-js-main" }, { - "path": "../grayLog" - }, - { + "name": "nestjs-microservice-boilerplate-api-master", "path": "../../../Downloads/nestjs-microservice-boilerplate-api-master" } ], diff --git a/package-lock.json b/package-lock.json index 73188a5bc..112402d9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -99,6 +99,7 @@ "@ngx-translate/core": "^13.0.0", "@ngxs/store": "^3.8.2", "@opentelemetry/exporter-metrics-otlp-http": "^0.52.1", + "@opentelemetry/exporter-otlp-http": "^0.26.0", "@opentelemetry/exporter-zipkin": "^1.25.0", "@opentelemetry/resources": "^1.25.0", "@opentelemetry/sdk-metrics": "^1.25.1", @@ -106,8 +107,9 @@ "@opentelemetry/sdk-trace-web": "^1.25.0", "@opentelemetry/semantic-conventions": "^1.25.0", "@pdftron/pdfjs-express": "^8.0.1", - "@sentry/angular": "7.73.0", + "@sentry/angular": "^7.73.0", "@sentry/capacitor": "^0.14.0", + "@sentry/tracing": "^7.114.0", "@teamhive/capacitor-video-recorder": "^5.0.0", "@tinymce/tinymce-angular": "^4.2.4", "@types/jest-environment-puppeteer": "^5.0.3", @@ -210,6 +212,7 @@ "@capacitor/cli": "^4.8.1", "@ionic/angular-toolkit": "^6.1.0", "@ionic/lab": "3.1.7", + "@sentry/cli": "^2.32.2", "@types/core-js": "^2.5.7", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", @@ -7770,6 +7773,18 @@ "node": ">=14" } }, + "node_modules/@opentelemetry/api-metrics": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.26.0.tgz", + "integrity": "sha512-idDSUTx+LRwJiHhVHhdh45SWow5u9lKNDROKu5AMzsIVPI29utH5FfT9vor8qMM6blxWWvlT22HUNdNMWqUQfQ==", + "deprecated": "Please use @opentelemetry/api >= 1.3.0", + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, "node_modules/@opentelemetry/core": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", @@ -7839,6 +7854,80 @@ "node": ">=14" } }, + "node_modules/@opentelemetry/exporter-otlp-http": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-otlp-http/-/exporter-otlp-http-0.26.0.tgz", + "integrity": "sha512-V3FcUEIVDZ66b3/6vjSBjwwozf/XV5eUXuELNzN8PAvGZH4mw36vaWlaxnGEV8HaZb2hbu2KbRpcOzqxx3tFDA==", + "deprecated": "Please use trace and metric specific exporters @opentelemetry/exporter-trace-otlp-http and @opentelemetry/exporter-metrics-otlp-http", + "dependencies": { + "@opentelemetry/api-metrics": "0.26.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "@opentelemetry/sdk-metrics-base": "0.26.0", + "@opentelemetry/sdk-trace-base": "1.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/exporter-otlp-http/node_modules/@opentelemetry/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.0.tgz", + "integrity": "sha512-1+qvKilADnSFW4PiXy+f7D22pvfGVxepZ69GcbF8cTcbQTUt7w63xEBWn5f5j92x9I3c0sqbW1RUx5/a4wgzxA==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/exporter-otlp-http/node_modules/@opentelemetry/resources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.0.tgz", + "integrity": "sha512-ORP8F2LLcJEm5M3H24RmdlMdiDc70ySPushpkrAW34KZGdZXwkrFoFXZhhs5MUxPT+fLrTuBafXxZVr8eHtFuQ==", + "dependencies": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/exporter-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.0.0.tgz", + "integrity": "sha512-/rXoyQlDlJTJ4SOVAbP0Gpj89B8oZ2hJApYG2Dq5klkgFAtDifN8271TIzwtM8/ET8HUhgx9eyoUJi42LhIesg==", + "dependencies": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/exporter-otlp-http/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.0.tgz", + "integrity": "sha512-XCZ6ZSmc8FOspxKUU+Ow9UtJeSSRcS5rFBYGpjzix02U2v+X9ofjOjgNRnpvxlSvkccYIhdTuwcvNskmZ46SeA==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@opentelemetry/exporter-zipkin": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.0.tgz", @@ -8086,6 +8175,62 @@ "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, + "node_modules/@opentelemetry/sdk-metrics-base": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics-base/-/sdk-metrics-base-0.26.0.tgz", + "integrity": "sha512-PbJsso7Vy/CLATAOyXbt/VP7ZQ2QYnvlq28lhOWaLPw8aqLogMBvidNGRrt7rF4/hfzLT6pMgpAAcit2C/nUMA==", + "deprecated": "Please use @opentelemetry/sdk-metrics", + "dependencies": { + "@opentelemetry/api-metrics": "0.26.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "lodash.merge": "^4.6.2" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/sdk-metrics-base/node_modules/@opentelemetry/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.0.tgz", + "integrity": "sha512-1+qvKilADnSFW4PiXy+f7D22pvfGVxepZ69GcbF8cTcbQTUt7w63xEBWn5f5j92x9I3c0sqbW1RUx5/a4wgzxA==", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">=8.5.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/sdk-metrics-base/node_modules/@opentelemetry/resources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.0.tgz", + "integrity": "sha512-ORP8F2LLcJEm5M3H24RmdlMdiDc70ySPushpkrAW34KZGdZXwkrFoFXZhhs5MUxPT+fLrTuBafXxZVr8eHtFuQ==", + "dependencies": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.2" + } + }, + "node_modules/@opentelemetry/sdk-metrics-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.0.tgz", + "integrity": "sha512-XCZ6ZSmc8FOspxKUU+Ow9UtJeSSRcS5rFBYGpjzix02U2v+X9ofjOjgNRnpvxlSvkccYIhdTuwcvNskmZ46SeA==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { "version": "1.25.1", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.1.tgz", @@ -8404,6 +8549,161 @@ } } }, + "node_modules/@sentry/capacitor/node_modules/@sentry/tracing": { + "version": "7.73.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.73.0.tgz", + "integrity": "sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg==", + "dependencies": { + "@sentry-internal/tracing": "7.73.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/cli": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.32.2.tgz", + "integrity": "sha512-m/6Z3FWu+rTd8jepVlJPKQhvbT8vCjt0N7BSWZiEUVW/8mhwAYJiwO0b+Ch/u4IqbBg1dp3805q5TFPl4AdrNw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + }, + "bin": { + "sentry-cli": "bin/sentry-cli" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@sentry/cli-darwin": "2.32.2", + "@sentry/cli-linux-arm": "2.32.2", + "@sentry/cli-linux-arm64": "2.32.2", + "@sentry/cli-linux-i686": "2.32.2", + "@sentry/cli-linux-x64": "2.32.2", + "@sentry/cli-win32-i686": "2.32.2", + "@sentry/cli-win32-x64": "2.32.2" + } + }, + "node_modules/@sentry/cli-darwin": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.32.2.tgz", + "integrity": "sha512-GDtePIavx3FKSRowdPdtIssahn46MfFFYNN+s7a9MjlhFwJtvC9A1bSDw7ksEtDaQolepUwmLPHaVe19y0T/zw==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.32.2.tgz", + "integrity": "sha512-u9s08wr8bDDqsAl6pk9iGGlOHtU+T8btU6voNKy71QzeIBpV9c8VVk/OnmP9aswp/ea4NY416yjnzcTvCrFKAw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-arm64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.32.2.tgz", + "integrity": "sha512-VECLVC1rLyvXk6rTVUfmfs4vhANjMgm4BVKGlA3rydmf2PJw2/NfipH3KeyijdE2vEoyLri+/6HH883pP0iniQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-i686": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.32.2.tgz", + "integrity": "sha512-XhofQz32OqLrQK1DEOsryhT7d29Df6VkccvxueGoIt2gpXEXtgRczsUwZjZqquDdkNCt+HPj9eUGcj8pY8JkmQ==", + "cpu": [ + "x86", + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-linux-x64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.32.2.tgz", + "integrity": "sha512-anyng4Qqt7zX4ZY4IzDH1RJWAVZNBe6sUHcuciNy7giCU3B4/XnxAHlwYmBSN5txpaumsWdstPgRKEUJG6AOSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux", + "freebsd" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-i686": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.32.2.tgz", + "integrity": "sha512-/auqx7QXG7F556fNK7vaB26pX7Far1CQMfI65iV4u/VWg6gV2WfvJWXB4iowhjqkYv56sZ+zOymLkEVF0R8wtg==", + "cpu": [ + "x86", + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@sentry/cli-win32-x64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.32.2.tgz", + "integrity": "sha512-w7hW2sEWVYQquqdILBSFhcVW+HdoyLqVPPkLPAXRSLTwBnuni9nQEIdXr0h/7db+K3cm7PvWndp5ixVyswLHZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@sentry/core": { "version": "7.73.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.73.0.tgz", @@ -8483,11 +8783,55 @@ } }, "node_modules/@sentry/tracing": { - "version": "7.73.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.73.0.tgz", - "integrity": "sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg==", + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-eldEYGADReZ4jWdN5u35yxLUSTOvjsiZAYd4KBEpf+Ii65n7g/kYOKAjNl7tHbrEG1EsMW4nDPWStUMk1w+tfg==", "dependencies": { - "@sentry-internal/tracing": "7.73.0" + "@sentry-internal/tracing": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry-internal/tracing": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-dOuvfJN7G+3YqLlUY4HIjyWHaRP8vbOgF+OsE5w2l7ZEn1rMAaUbPntAR8AF9GBA6j2zWNoSo8e7GjbJxVofSg==", + "dependencies": { + "@sentry/core": "7.114.0", + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/core": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", + "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", + "dependencies": { + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/types": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", + "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/tracing/node_modules/@sentry/utils": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", + "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", + "dependencies": { + "@sentry/types": "7.114.0" }, "engines": { "node": ">=8" @@ -49988,6 +50332,12 @@ "@opentelemetry/api": "^1.0.0" } }, + "@opentelemetry/api-metrics": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-metrics/-/api-metrics-0.26.0.tgz", + "integrity": "sha512-idDSUTx+LRwJiHhVHhdh45SWow5u9lKNDROKu5AMzsIVPI29utH5FfT9vor8qMM6blxWWvlT22HUNdNMWqUQfQ==", + "requires": {} + }, "@opentelemetry/core": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.25.0.tgz", @@ -50032,6 +50382,54 @@ } } }, + "@opentelemetry/exporter-otlp-http": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-otlp-http/-/exporter-otlp-http-0.26.0.tgz", + "integrity": "sha512-V3FcUEIVDZ66b3/6vjSBjwwozf/XV5eUXuELNzN8PAvGZH4mw36vaWlaxnGEV8HaZb2hbu2KbRpcOzqxx3tFDA==", + "requires": { + "@opentelemetry/api-metrics": "0.26.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "@opentelemetry/sdk-metrics-base": "0.26.0", + "@opentelemetry/sdk-trace-base": "1.0.0" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.0.tgz", + "integrity": "sha512-1+qvKilADnSFW4PiXy+f7D22pvfGVxepZ69GcbF8cTcbQTUt7w63xEBWn5f5j92x9I3c0sqbW1RUx5/a4wgzxA==", + "requires": { + "@opentelemetry/semantic-conventions": "1.0.0", + "semver": "^7.3.5" + } + }, + "@opentelemetry/resources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.0.tgz", + "integrity": "sha512-ORP8F2LLcJEm5M3H24RmdlMdiDc70ySPushpkrAW34KZGdZXwkrFoFXZhhs5MUxPT+fLrTuBafXxZVr8eHtFuQ==", + "requires": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0" + } + }, + "@opentelemetry/sdk-trace-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.0.0.tgz", + "integrity": "sha512-/rXoyQlDlJTJ4SOVAbP0Gpj89B8oZ2hJApYG2Dq5klkgFAtDifN8271TIzwtM8/ET8HUhgx9eyoUJi42LhIesg==", + "requires": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0", + "lodash.merge": "^4.6.2" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.0.tgz", + "integrity": "sha512-XCZ6ZSmc8FOspxKUU+Ow9UtJeSSRcS5rFBYGpjzix02U2v+X9ofjOjgNRnpvxlSvkccYIhdTuwcvNskmZ46SeA==" + } + } + }, "@opentelemetry/exporter-zipkin": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-1.25.0.tgz", @@ -50224,6 +50622,42 @@ } } }, + "@opentelemetry/sdk-metrics-base": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics-base/-/sdk-metrics-base-0.26.0.tgz", + "integrity": "sha512-PbJsso7Vy/CLATAOyXbt/VP7ZQ2QYnvlq28lhOWaLPw8aqLogMBvidNGRrt7rF4/hfzLT6pMgpAAcit2C/nUMA==", + "requires": { + "@opentelemetry/api-metrics": "0.26.0", + "@opentelemetry/core": "1.0.0", + "@opentelemetry/resources": "1.0.0", + "lodash.merge": "^4.6.2" + }, + "dependencies": { + "@opentelemetry/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.0.0.tgz", + "integrity": "sha512-1+qvKilADnSFW4PiXy+f7D22pvfGVxepZ69GcbF8cTcbQTUt7w63xEBWn5f5j92x9I3c0sqbW1RUx5/a4wgzxA==", + "requires": { + "@opentelemetry/semantic-conventions": "1.0.0", + "semver": "^7.3.5" + } + }, + "@opentelemetry/resources": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.0.0.tgz", + "integrity": "sha512-ORP8F2LLcJEm5M3H24RmdlMdiDc70ySPushpkrAW34KZGdZXwkrFoFXZhhs5MUxPT+fLrTuBafXxZVr8eHtFuQ==", + "requires": { + "@opentelemetry/core": "1.0.0", + "@opentelemetry/semantic-conventions": "1.0.0" + } + }, + "@opentelemetry/semantic-conventions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.0.0.tgz", + "integrity": "sha512-XCZ6ZSmc8FOspxKUU+Ow9UtJeSSRcS5rFBYGpjzix02U2v+X9ofjOjgNRnpvxlSvkccYIhdTuwcvNskmZ46SeA==" + } + } + }, "@opentelemetry/sdk-trace-base": { "version": "1.25.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.0.tgz", @@ -50439,8 +50873,87 @@ "@sentry/tracing": "7.73.0", "@sentry/types": "7.73.0", "@sentry/utils": "7.73.0" + }, + "dependencies": { + "@sentry/tracing": { + "version": "7.73.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.73.0.tgz", + "integrity": "sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg==", + "requires": { + "@sentry-internal/tracing": "7.73.0" + } + } } }, + "@sentry/cli": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.32.2.tgz", + "integrity": "sha512-m/6Z3FWu+rTd8jepVlJPKQhvbT8vCjt0N7BSWZiEUVW/8mhwAYJiwO0b+Ch/u4IqbBg1dp3805q5TFPl4AdrNw==", + "dev": true, + "requires": { + "@sentry/cli-darwin": "2.32.2", + "@sentry/cli-linux-arm": "2.32.2", + "@sentry/cli-linux-arm64": "2.32.2", + "@sentry/cli-linux-i686": "2.32.2", + "@sentry/cli-linux-x64": "2.32.2", + "@sentry/cli-win32-i686": "2.32.2", + "@sentry/cli-win32-x64": "2.32.2", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.7", + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "which": "^2.0.2" + } + }, + "@sentry/cli-darwin": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.32.2.tgz", + "integrity": "sha512-GDtePIavx3FKSRowdPdtIssahn46MfFFYNN+s7a9MjlhFwJtvC9A1bSDw7ksEtDaQolepUwmLPHaVe19y0T/zw==", + "dev": true, + "optional": true + }, + "@sentry/cli-linux-arm": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.32.2.tgz", + "integrity": "sha512-u9s08wr8bDDqsAl6pk9iGGlOHtU+T8btU6voNKy71QzeIBpV9c8VVk/OnmP9aswp/ea4NY416yjnzcTvCrFKAw==", + "dev": true, + "optional": true + }, + "@sentry/cli-linux-arm64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.32.2.tgz", + "integrity": "sha512-VECLVC1rLyvXk6rTVUfmfs4vhANjMgm4BVKGlA3rydmf2PJw2/NfipH3KeyijdE2vEoyLri+/6HH883pP0iniQ==", + "dev": true, + "optional": true + }, + "@sentry/cli-linux-i686": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.32.2.tgz", + "integrity": "sha512-XhofQz32OqLrQK1DEOsryhT7d29Df6VkccvxueGoIt2gpXEXtgRczsUwZjZqquDdkNCt+HPj9eUGcj8pY8JkmQ==", + "dev": true, + "optional": true + }, + "@sentry/cli-linux-x64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.32.2.tgz", + "integrity": "sha512-anyng4Qqt7zX4ZY4IzDH1RJWAVZNBe6sUHcuciNy7giCU3B4/XnxAHlwYmBSN5txpaumsWdstPgRKEUJG6AOSA==", + "dev": true, + "optional": true + }, + "@sentry/cli-win32-i686": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.32.2.tgz", + "integrity": "sha512-/auqx7QXG7F556fNK7vaB26pX7Far1CQMfI65iV4u/VWg6gV2WfvJWXB4iowhjqkYv56sZ+zOymLkEVF0R8wtg==", + "dev": true, + "optional": true + }, + "@sentry/cli-win32-x64": { + "version": "2.32.2", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.32.2.tgz", + "integrity": "sha512-w7hW2sEWVYQquqdILBSFhcVW+HdoyLqVPPkLPAXRSLTwBnuni9nQEIdXr0h/7db+K3cm7PvWndp5ixVyswLHZA==", + "dev": true, + "optional": true + }, "@sentry/core": { "version": "7.73.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.73.0.tgz", @@ -50514,11 +51027,45 @@ } }, "@sentry/tracing": { - "version": "7.73.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.73.0.tgz", - "integrity": "sha512-LOQR6Hkc8ZoflCXWtMlxTbCBEwv0MSOr3vesnRsmlFG8TW1YUIneU+wKnVxToWAZ8fq+6ubclnuIUKHfqTk/Tg==", + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-eldEYGADReZ4jWdN5u35yxLUSTOvjsiZAYd4KBEpf+Ii65n7g/kYOKAjNl7tHbrEG1EsMW4nDPWStUMk1w+tfg==", "requires": { - "@sentry-internal/tracing": "7.73.0" + "@sentry-internal/tracing": "7.114.0" + }, + "dependencies": { + "@sentry-internal/tracing": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.114.0.tgz", + "integrity": "sha512-dOuvfJN7G+3YqLlUY4HIjyWHaRP8vbOgF+OsE5w2l7ZEn1rMAaUbPntAR8AF9GBA6j2zWNoSo8e7GjbJxVofSg==", + "requires": { + "@sentry/core": "7.114.0", + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + } + }, + "@sentry/core": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", + "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", + "requires": { + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + } + }, + "@sentry/types": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", + "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==" + }, + "@sentry/utils": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", + "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", + "requires": { + "@sentry/types": "7.114.0" + } + } } }, "@sentry/types": { diff --git a/package.json b/package.json index 448ff5938..47faba9a2 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,9 @@ "docker:build": "docker build -t gabinetedigital:0.0.0.1 .", "docker:publish": "docker run -p gabinetedigital:0.0.0.1", "build:oapr": "ionic cap build android --configuration oapr", - "build:dev": "ionic cap build android --configuration dev" + "build:dev": "ionic cap build android --configuration dev", + "sentry:releases": "sentry-cli releases new -p your-project-name $(git rev-parse HEAD) && sentry-cli releases set-commits --auto $(git rev-parse HEAD) && sentry-cli releases files $(git rev-parse HEAD) upload-sourcemaps ./www --rewrite && sentry-cli releases finalize $(git rev-parse HEAD)", + "build:sentry": "npm run build && npm run sentry:releases" }, "private": true, "dependencies": { @@ -115,6 +117,7 @@ "@ngx-translate/core": "^13.0.0", "@ngxs/store": "^3.8.2", "@opentelemetry/exporter-metrics-otlp-http": "^0.52.1", + "@opentelemetry/exporter-otlp-http": "^0.26.0", "@opentelemetry/exporter-zipkin": "^1.25.0", "@opentelemetry/resources": "^1.25.0", "@opentelemetry/sdk-metrics": "^1.25.1", @@ -122,8 +125,9 @@ "@opentelemetry/sdk-trace-web": "^1.25.0", "@opentelemetry/semantic-conventions": "^1.25.0", "@pdftron/pdfjs-express": "^8.0.1", - "@sentry/angular": "7.73.0", + "@sentry/angular": "^7.73.0", "@sentry/capacitor": "^0.14.0", + "@sentry/tracing": "^7.114.0", "@teamhive/capacitor-video-recorder": "^5.0.0", "@tinymce/tinymce-angular": "^4.2.4", "@types/jest-environment-puppeteer": "^5.0.3", @@ -226,6 +230,7 @@ "@capacitor/cli": "^4.8.1", "@ionic/angular-toolkit": "^6.1.0", "@ionic/lab": "3.1.7", + "@sentry/cli": "^2.32.2", "@types/core-js": "^2.5.7", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index e6af06072..9185d1665 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -119,9 +119,9 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */ // We recommend adjusting this value in production. tracesSampleRate: 1.0, integrations: [ - new BrowserTracing({ - tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'], - }) as Integration, + // new BrowserTracing({ + // tracingOrigins: ['localhost', 'https://gd-api.oapr.gov.ao/api/'], + // }) as Integration, ] }, // Forward the init method to the sibling Framework. diff --git a/src/app/pages/agenda/agenda.page.ts b/src/app/pages/agenda/agenda.page.ts index c3b800280..1dca34e32 100644 --- a/src/app/pages/agenda/agenda.page.ts +++ b/src/app/pages/agenda/agenda.page.ts @@ -46,6 +46,7 @@ import { CalendarState, selectEventSource } from 'src/app/services/Repositorys/A import { Store } from '@ngrx/store'; import { NotificationRepositoryService } from 'src/app/module/notification/data/notification-repository.service'; // import { Unsubscribable } from '../../../../android/app/build/intermediates/assets/debug/public/assets/dexie/dist/dexie'; + @Component({ selector: 'app-agenda', templateUrl: './agenda.page.html', @@ -753,6 +754,12 @@ export class AgendaPage implements OnInit { this.CalendarStore.removeRangeForCalendar(startTime, endTime, null , selectedCalendar.wxUserId as any) let eventsList = response.value; + + tracing.log('range', { + date: { startTime, endTime }, + value: response.value + }) + this.CalendarStore.pushEvent(eventsList, label, selectedCalendar.wxUserId); this.listToPresent = this.CalendarStore.getEventsByCalendarIds(selectedCalendarIds) this.showTimelinePR = true; diff --git a/src/app/services/monitoring/opentelemetry/logging.ts b/src/app/services/monitoring/opentelemetry/logging.ts new file mode 100644 index 000000000..72903ab59 --- /dev/null +++ b/src/app/services/monitoring/opentelemetry/logging.ts @@ -0,0 +1,26 @@ +import { Injectable } from "@angular/core"; +import { v4 as uuidv4 } from 'uuid'; +import { WebSocketGraylogService } from "../socket/socket"; +import { Span } from "@opentelemetry/sdk-trace-web"; + + +export class OpenTelemetryLogging { + + socket = new WebSocketGraylogService() + + constructor() { + this.socket.start() + } + + send(data: Object & { type: string; payload: any, spanContext:any }): void { + this.socket.send({ + type: data.type, + payload: data.payload, + requestId: uuidv4(), + spanContext: data.spanContext + }); + } + +} + +export const openTelemetryLogging = new OpenTelemetryLogging() diff --git a/src/app/services/monitoring/opentelemetry/matrix.ts b/src/app/services/monitoring/opentelemetry/matrix.ts index ad038fd5f..8c246873a 100644 --- a/src/app/services/monitoring/opentelemetry/matrix.ts +++ b/src/app/services/monitoring/opentelemetry/matrix.ts @@ -1,6 +1,8 @@ import { metrics } from '@opentelemetry/api'; import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http'; import { MeterProvider, PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics'; +import { Subject } from 'rxjs'; +import { throttleTime } from 'rxjs/operators'; import { environment } from 'src/environments/environment'; // Initialize OpenTelemetry metrics @@ -10,15 +12,28 @@ metrics.setGlobalMeterProvider(meterProvider); if (window.location.protocol !== 'https:' && environment.apiURL != 'https://gdqas-api.oapr.gov.ao/api/') { const metricReader = new PeriodicExportingMetricReader({ exporter: new OTLPMetricExporter({ - url: 'http://5-180-182-151.cloud-xip.com:4318/v1/metrics', + url: 'https://5-180-182-151.cloud-xip.com:85/collector2/v1/metrics', // headers: { // 'Authorization': 'Basic ' + btoa('tabteste@006:tabteste@006'), // } }), - exportIntervalMillis: 3000, + exportIntervalMillis: 30000, }); meterProvider.addMetricReader(metricReader); + + const subject = new Subject() + + subject + .pipe( + throttleTime(5000) // 5000 milliseconds = 5 seconds + ) + .subscribe(() => { + metricReader.forceFlush().then(() => { + console.log('Metrics exported'); + }); + }); + } export const meter = meterProvider.getMeter('example-exporter-collector'); export const RequestCounter = meter.createCounter('post_requests', { diff --git a/src/app/services/monitoring/opentelemetry/opentelemetry.ts b/src/app/services/monitoring/opentelemetry/opentelemetry.ts index d6d872536..99cbbe224 100644 --- a/src/app/services/monitoring/opentelemetry/opentelemetry.ts +++ b/src/app/services/monitoring/opentelemetry/opentelemetry.ts @@ -3,6 +3,8 @@ import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'; import { ZipkinExporter } from '@opentelemetry/exporter-zipkin'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions' import { Resource } from '@opentelemetry/resources'; +import { OTLPTraceExporter } from '@opentelemetry/exporter-otlp-http'; +import { context, trace, propagation } from '@opentelemetry/api'; function createProvider(serviceName) { const provider = new WebTracerProvider({ @@ -32,3 +34,54 @@ export const OpentelemetryAgendaProvider = createProvider('FO-agenda-service'); export const OpentelemetryNotificationProvider = createProvider('FO-notification'); export const OpentelemetryInterceptorProvider = createProvider('FO-interceptor'); export const OpentelemetryPublicationProvider = createProvider('FO-publication-service'); +export const OpentelemetryLogging = createProvider('logging'); + +const tracerInstance = OpentelemetryAgendaProvider.getTracer('example-tracer-hole', '111', {}) + + +function parentSpanExample() { + // Create a tracer instance + const tracer = trace.getTracer('FO-chat-service'); + + // Start a parent span + const parentSpan = tracer.startSpan('parent-span'); + parentSpan.setAttribute('key', 'value') + + const traceId = parentSpan.spanContext().traceId; + const spanId = parentSpan.spanContext().spanId; + parentSpan.end(); // End the parent span + + const spanContext = { + traceId: traceId, + spanId: spanId, + traceFlags: 1 // 1 means the trace is sampled + }; + + // Create a new context with the parent span + const parentContext = trace.setSpan(context.active(), parentSpan); + const parentContext1 = trace.setSpan(context.active(), trace.wrapSpanContext(spanContext)); + + // Start a new child span + const childSpan = tracer.startSpan('child-span1', {root: false}, parentContext1); + childSpan.end(); + + // Simulate some work + setTimeout(() => { + childSpanExample(parentContext); // Pass the context to child span + + }, 500); +} + + +function childSpanExample(parentContext) { + // Create a new child span with the parent context + const tracer = trace.getTracer('FO-chat-service'); + const childSpan = tracer.startSpan('child-span', undefined, parentContext); + + // Simulate some work + setTimeout(() => { + childSpan.end(); // End the child span + }, 500); +} + +parentSpanExample() diff --git a/src/app/services/monitoring/opentelemetry/tracer.ts b/src/app/services/monitoring/opentelemetry/tracer.ts index 07e585c6e..b09f863b9 100644 --- a/src/app/services/monitoring/opentelemetry/tracer.ts +++ b/src/app/services/monitoring/opentelemetry/tracer.ts @@ -1,11 +1,12 @@ import { v4 as uuidv4 } from 'uuid'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { Tracer, Span } from '@opentelemetry/sdk-trace-base'; -import { OpentelemetryAgendaProvider, OpentelemetryInterceptorProvider, OpentelemetryNotificationProvider } from './opentelemetry'; +import { OpentelemetryAgendaProvider, OpentelemetryInterceptorProvider, OpentelemetryLogging, OpentelemetryNotificationProvider } from './opentelemetry'; import { Device, DeviceInfo } from '@capacitor/device'; import { SessionStore } from 'src/app/store/session.service'; import { environment } from 'src/environments/environment'; import { UseCaseCounter } from './matrix'; +import { openTelemetryLogging } from './logging'; // import { context, propagation } from '@opentelemetry/api'; const tracerInstance = OpentelemetryAgendaProvider.getTracer('example-tracer-hole', '111', {}) @@ -18,6 +19,24 @@ Device.getInfo().then(e => { device = e }); +function convertAttributesToString(obj) { + const result = {}; + + for (const key in obj) { + if (obj.hasOwnProperty(key)) { + if (typeof obj[key] === 'object' && obj[key] !== null) { + // Convert only the object attribute to string + result[key] = JSON.stringify(obj[key], null, 2); + } else { + // Convert primitive values to string + result[key] = String(obj[key]); + } + } + } + + return result; +} + const createTracingInstance = ({bugPrint, name, module, autoFinish}): TracingType => { const requestId = uuidv4() @@ -31,7 +50,6 @@ const createTracingInstance = ({bugPrint, name, module, autoFinish}): TracingTyp } const span = _tracerInstance.startSpan(name); - let hasBug:Boolean const data = { event: {}, @@ -64,6 +82,28 @@ const createTracingInstance = ({bugPrint, name, module, autoFinish}): TracingTyp span.setAttribute('error', 'true') } }, + log(message: string, data: Object) { + const spanId = span.spanContext().spanId; + const _tracer = OpentelemetryLogging.getTracer('logging') + const spanContext = _tracer.startSpan(name) + + data = convertAttributesToString(data) + openTelemetryLogging.send({ + type: 'graylog', + spanContext, + payload: { + message: message, + object: { + ...data, + spanId, + name, + user: SessionStore?.user?.FullName, + device_name: device?.name || device?.model, + commit_date: environment.version.lastCommitTime, + } + } + }) + }, getAttribute: (key: string) => { return data.tags[key] }, @@ -77,9 +117,7 @@ const createTracingInstance = ({bugPrint, name, module, autoFinish}): TracingTyp console.error(name, data) } }, - bugFlag:() => { - hasBug = true - }, + bugFlag:() => {}, createSpan: (name, parent?: any) => { return tracerInstance.startSpan(name, { root: false }, parent) as Span; } @@ -177,7 +215,7 @@ export type TracingType = { attributes: typeof SemanticAttributes; // axios: (config?: AxiosRequestConfig) => AxiosInstance; setStatus: (status: any) => void; - //logEvent: (name: string, attributesOrStartTime?: AttributeValue | TimeInput) => void; + log: (message: string, data: Object) => void; addEvent: (context: string, message?: any, obj?: any) => void; setAttribute: (key: string, value: string) => void; getAttribute: (key: string) => string; diff --git a/src/app/services/monitoring/socket/socket.ts b/src/app/services/monitoring/socket/socket.ts new file mode 100644 index 000000000..a86c0886c --- /dev/null +++ b/src/app/services/monitoring/socket/socket.ts @@ -0,0 +1,59 @@ + +import { Injectable } from '@angular/core'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable({ + providedIn: 'root' +}) +export class WebSocketGraylogService { + private adminSocketGlobal!: WebSocket; + connected = false + + constructor() { } + + connect(): void { + this.adminSocketGlobal = new WebSocket('wss://5-180-182-151.cloud-xip.com:85/ws/'); + + this.adminSocketGlobal.onopen = () => { + console.log('Admin WebSocket is open now.'); + this.adminSocketGlobal.send("uuid"); + this.connected = true + }; + + this.adminSocketGlobal.onmessage = async (event: MessageEvent) => { + // Handle incoming messages here + }; + + this.adminSocketGlobal.onclose = () => { + console.log('Admin WebSocket is closed now.'); + this.connect(); + }; + + this.adminSocketGlobal.onerror = (error: Event) => { + console.error('Admin WebSocket error:', error); + }; + } + + send(data: Object & { type: string; payload: Object , requestId: string, spanContext:any }): void { + if (this.adminSocketGlobal.readyState === WebSocket.OPEN) { + + this.adminSocketGlobal.send(JSON.stringify({ + type: data.type , + payload: data.payload, + requestId: data.requestId, + parentSpan: { + traceId: data.spanContext.spanContext().traceId, + spanId: data.spanContext.spanContext().spanId, + } + })); + + // data.spanContext.end() + } else { + console.warn('WebSocket is not open. Message not sent.'); + } + } + + start(): void { + this.connect(); + } +} diff --git a/src/app/shared/publication/new-publication/new-publication.page.ts b/src/app/shared/publication/new-publication/new-publication.page.ts index 59b4df286..a1ab1e4cd 100644 --- a/src/app/shared/publication/new-publication/new-publication.page.ts +++ b/src/app/shared/publication/new-publication/new-publication.page.ts @@ -821,7 +821,7 @@ import { Observable, of, Subject } from 'rxjs'; import { tap, switchMap, delay, map } from 'rxjs/operators'; import { CropImagePage } from 'src/app/modals/crop-image/crop-image.page'; -function shareResponse(): MethodDecorator { +function shareResponse(): MethodDecorator { return function ( target: any, propertyKey: string | symbol, @@ -829,9 +829,9 @@ function shareResponse(): MethodDecorator { ): PropertyDescriptor { const originalMethod = descriptor.value; - descriptor.value = function (...args: any[]): Observable { + descriptor.value = function (...args: any[]) { // Create a subject to broadcast the response - const responseSubject = new Subject(); + const responseSubject = new Subject(); // Use switchMap to ensure only one subscription is active at a time return responseSubject.pipe( @@ -868,7 +868,7 @@ function shareResponse(): MethodDecorator { class ApiService { private isExecuting = false; - @shareResponse() + @shareResponse() fetchData(): Observable { // Simulate fetching data locally (replace it with your own data source) const localData: number[] = [1, 2, 3, 4, 5]; diff --git a/version/git-version.ts b/version/git-version.ts index 1856e6ee3..d3630d4e5 100644 --- a/version/git-version.ts +++ b/version/git-version.ts @@ -1,11 +1,11 @@ export let versionData = { - "shortSHA": "f80e49d53", - "SHA": "f80e49d53340aff8e94ad36b4c44b1eae01cfb39", + "shortSHA": "ef7edb397", + "SHA": "ef7edb39789dc7ede7052a36434d1d0cb7756ba2", "branch": "feature/agenda-api-peter", "lastCommitAuthor": "'Peter Maquiran'", - "lastCommitTime": "'Thu Jul 18 10:40:33 2024 +0100'", - "lastCommitMessage": "change build version", - "lastCommitNumber": "5875", - "changeStatus": "On branch feature/agenda-api-peter\nYour branch is ahead of 'origin/feature/agenda-api-peter' by 2 commits.\n (use \"git push\" to publish your local commits)\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tnew file: endpoints_documentation.md\n\tmodified: gabinete-digital-fo.code-workspace\n\tmodified: src/app/pages/gabinete-digital/despachos-pr/despacho-pr/despacho-pr.page.ts\n\tmodified: src/app/pages/gabinete-digital/despachos/despacho/despacho.page.ts\n\tmodified: src/app/pages/gabinete-digital/diplomas-assinar/diploma-assinar/diploma-assinar.page.ts\n\tmodified: src/app/pages/gabinete-digital/diplomas/diploma/diploma.page.ts\n\tmodified: src/app/pages/gabinete-digital/expediente/expediente-detail/expediente-detail.page.ts\n\tmodified: src/app/pages/gabinete-digital/viewer-attachment/viewer-attachment.page.ts\n\tmodified: src/app/services/task.service.ts\n\tmodified: src/app/shared/gabinete-digital/generic/task-details/task-details.page.html\n\tmodified: src/app/shared/popover/opts-expediente/opts-expediente.page.ts", + "lastCommitTime": "'Fri Jul 19 17:50:25 2024 +0100'", + "lastCommitMessage": "fix bug", + "lastCommitNumber": "5876", + "changeStatus": "On branch feature/agenda-api-peter\nYour branch is up to date with 'origin/feature/agenda-api-peter'.\n\nChanges to be committed:\n (use \"git restore --staged ...\" to unstage)\n\tmodified: gabinete-digital-fo.code-workspace\n\tmodified: package-lock.json\n\tmodified: package.json\n\tmodified: src/app/app.module.ts\n\tmodified: src/app/pages/agenda/agenda.page.ts\n\tnew file: src/app/services/monitoring/opentelemetry/logging.ts\n\tmodified: src/app/services/monitoring/opentelemetry/matrix.ts\n\tmodified: src/app/services/monitoring/opentelemetry/opentelemetry.ts\n\tmodified: src/app/services/monitoring/opentelemetry/tracer.ts\n\tnew file: src/app/services/monitoring/socket/socket.ts\n\tmodified: src/app/shared/publication/new-publication/new-publication.page.ts\n\tmodified: version/git-version.ts", "changeAuthor": "peter.maquiran" } \ No newline at end of file