diff --git a/package.json b/package.json index c71af72..2118034 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,26 @@ "preview": "svelte-kit preview" }, "devDependencies": { + "@dimforge/rapier3d-compat": "^0.10.0", "@sveltejs/adapter-static": "1.0.0-next.39", "@sveltejs/kit": "1.0.0-next.431", + "@theatre/core": "^0.5.1", + "@theatre/studio": "^0.5.1", + "@threlte/core": "^5.0.8", + "@threlte/extras": "^4.9.3", + "@threlte/preprocess": "^0.0.2", + "@threlte/rapier": "^0.5.0", + "@threlte/theatre": "^0.0.2", + "@types/three": "^0.147.1", "mdsvex": "0.10.5", "svelte": "3.46.4", + "svelte-sequential-preprocessor": "^0.0.7", + "three": "^0.148.0", "vite-plugin-windicss": "^1.8.7" }, "type": "module", "dependencies": { + "@elastic/apm-rum": "^5.12.0", "@sentry/browser": "^7.24.2", "@sveltejs/pancake": "^0.0.18", "katex": "0.15.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30c2af0..db65487 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,10 +1,20 @@ lockfileVersion: 5.4 specifiers: + '@dimforge/rapier3d-compat': ^0.10.0 + '@elastic/apm-rum': ^5.12.0 '@sentry/browser': ^7.24.2 '@sveltejs/adapter-static': 1.0.0-next.39 '@sveltejs/kit': 1.0.0-next.431 '@sveltejs/pancake': ^0.0.18 + '@theatre/core': ^0.5.1 + '@theatre/studio': ^0.5.1 + '@threlte/core': ^5.0.8 + '@threlte/extras': ^4.9.3 + '@threlte/preprocess': ^0.0.2 + '@threlte/rapier': ^0.5.0 + '@threlte/theatre': ^0.0.2 + '@types/three': ^0.147.1 katex: 0.15.2 luxon: 2.3.1 mdast-util-gfm-table: ^1.0.4 @@ -20,6 +30,8 @@ specifiers: remark-parse: 10.0.1 remark-twemoji: 0.1.1 svelte: 3.46.4 + svelte-sequential-preprocessor: ^0.0.7 + three: ^0.148.0 twemoji: 13.1.0 unified: ^10.1.2 vite: ^3.0.9 @@ -27,6 +39,7 @@ specifiers: xterm: 4.18.0 dependencies: + '@elastic/apm-rum': 5.12.0 '@sentry/browser': 7.24.2 '@sveltejs/pancake': 0.0.18 katex: 0.15.2 @@ -48,10 +61,21 @@ dependencies: xterm: 4.18.0 devDependencies: + '@dimforge/rapier3d-compat': 0.10.0 '@sveltejs/adapter-static': 1.0.0-next.39 '@sveltejs/kit': 1.0.0-next.431_svelte@3.46.4+vite@3.0.9 + '@theatre/core': 0.5.1 + '@theatre/studio': 0.5.1_@theatre+core@0.5.1 + '@threlte/core': 5.0.8 + '@threlte/extras': 4.9.3_three@0.148.0 + '@threlte/preprocess': 0.0.2 + '@threlte/rapier': 0.5.0 + '@threlte/theatre': 0.0.2 + '@types/three': 0.147.1 mdsvex: 0.10.5_svelte@3.46.4 svelte: 3.46.4 + svelte-sequential-preprocessor: 0.0.7 + three: 0.148.0 vite-plugin-windicss: 1.8.7_vite@3.0.9 packages: @@ -60,6 +84,26 @@ packages: resolution: {integrity: sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==} dev: true + /@dimforge/rapier3d-compat/0.10.0: + resolution: {integrity: sha512-3SPxyAnPQz9P3cIhgF8VncwJwrqyAW2xsNEYgXbxDhvB2IaIG63eTX7rNIJUnec5FDYqgvVo/nqY1XarzT5T2Q==} + dev: true + + /@elastic/apm-rum-core/5.17.0: + resolution: {integrity: sha512-GN1UyyeL8+AD9crKi2lR1MlariKlL5aIlsuVxR9SM1pGBBno1uVUW8Cu6KqzGpscYGf78LNdDezlc5Amx4vJbw==} + engines: {node: '>=8.0.0'} + dependencies: + error-stack-parser: 1.3.6 + opentracing: 0.14.7 + promise-polyfill: 8.2.3 + dev: false + + /@elastic/apm-rum/5.12.0: + resolution: {integrity: sha512-WEyzOhrtaExV9iFH2YxHbjuQNESunn5mMlmPfGan/rD6grzamN5vPOo844wgKy7/f5DsQoAIxFTf1VjvOaHcjA==} + engines: {node: '>=8.0.0'} + dependencies: + '@elastic/apm-rum-core': 5.17.0 + dev: false + /@esbuild/linux-loong64/0.14.54: resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} engines: {node: '>=12'} @@ -194,6 +238,51 @@ packages: - supports-color dev: true + /@theatre/core/0.5.1: + resolution: {integrity: sha512-LV3LwHPWVm62bR6DUQ55t4kCaI1KGrz+rPLoA6pMJ57x+6vBpoSCI0b11gJPdA1mCXebcNWN+U5M3PP6jJaSSg==} + dependencies: + '@theatre/dataverse': 0.5.1 + dev: true + + /@theatre/dataverse/0.5.1: + resolution: {integrity: sha512-oTjR8fNDbY11GSp7kw8quuOE9IC/5qzTe++OjFgn5enHKcFSaSPAZ8SIyOs+Im9bYgjcJFg/AYgU3Xi/MENgwQ==} + dependencies: + lodash-es: 4.17.21 + dev: true + + /@theatre/studio/0.5.1_@theatre+core@0.5.1: + resolution: {integrity: sha512-6r8JjSdUhL8JXMLlnhOLLFc/Br5Ddcq4EQmwUSCEBbFuJZcyb++GxV23p5W7a0DiB7NgtKdORj77n5NBt0WEpA==} + peerDependencies: + '@theatre/core': '*' + dependencies: + '@theatre/core': 0.5.1 + '@theatre/dataverse': 0.5.1 + dev: true + + /@threlte/core/5.0.8: + resolution: {integrity: sha512-RSYnuBt7glaRDPWm0dajggZDd7vtxvri3x2RFOeYDCt7DmrHXxFHEh4pHmB7JGZJoRxOrJjtiwncyDpWjCzvnQ==} + dev: true + + /@threlte/extras/4.9.3_three@0.148.0: + resolution: {integrity: sha512-1XVa9a3C+EQE9vMCZopZ2oZGncDlk/Claz+voFCTZvUqJl0xpPWBQTPNM6V61nXu8k5t+JKSGam3TWygBnfxug==} + dependencies: + troika-three-text: 0.46.4_three@0.148.0 + transitivePeerDependencies: + - three + dev: true + + /@threlte/preprocess/0.0.2: + resolution: {integrity: sha512-Eb3u3nAEBSFpadQvCdeZKy0xE4kgnlmxeTxnzTsmvUJt5ZEadbMg1+/LXn0oAYgFO72YQ62CJ7WI4hmoQSpOeA==} + dev: true + + /@threlte/rapier/0.5.0: + resolution: {integrity: sha512-+lZ24lPdKLyXZA4iQvRl8prpQF9ARRaETm1EtkRCZSZm8NjSNKcpD6Gk5hCsI0PQbzCavY2FOrSvCPUbBuQgTA==} + dev: true + + /@threlte/theatre/0.0.2: + resolution: {integrity: sha512-Pu8wwEOmzJ3Dqs1h2SeEUQG3lyg4M3ppRj/TGONijTSAchprfY4kTXBI1hZz1k6mn2c2FNY13HsiAjwQJnMWug==} + dev: true + /@types/debug/4.1.7: resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: @@ -220,9 +309,19 @@ packages: resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} dev: false + /@types/three/0.147.1: + resolution: {integrity: sha512-1dGYrF9E7frAXu3CRUYtTFj97PlA/Q0OedDQBROn3fKjtKXNhXc6/VNgkGod3axJMeNPNFDa6ur9eOcQ+aD0zw==} + dependencies: + '@types/webxr': 0.5.0 + dev: true + /@types/unist/2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@types/webxr/0.5.0: + resolution: {integrity: sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==} + dev: true + /@windicss/config/1.8.7: resolution: {integrity: sha512-8n+/Y36j5L3rw2tgMdLjeGRuNV7VYfKoHoraLK6Bk9OJ1MTPd5vv7pekof/uOPWVV7WWjVeZ6CTO8SDbDDW3iw==} dependencies: @@ -269,6 +368,12 @@ packages: resolution: {integrity: sha512-LggQ4YTdjWQSKELZF5JwchnBa1u0pIQSZf5lSdOHEdbVP55h0qICA/FUp3+W99q0xqxYa1ZQizTUH87gecII5w==} dev: false + /bidi-js/1.0.2: + resolution: {integrity: sha512-rzSy/k7WdX5zOyeHHCOixGXbCHkyogkxPKL2r8QtzHmVQDiWCXUWa18bLdMWT9CYMLOYTjWpTHawuev2ouYJVw==} + dependencies: + require-from-string: 2.0.2 + dev: true + /boolbase/1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false @@ -371,6 +476,12 @@ packages: hasBin: true dev: false + /error-stack-parser/1.3.6: + resolution: {integrity: sha512-xhuSYd8wLgOXwNgjcPeXMPL/IiiA1Huck+OPvClpJViVNNlJVtM41o+1emp7bPvlCJwCatFX2DWc05/DgfbWzA==} + dependencies: + stackframe: 0.3.1 + dev: false + /es-abstract/1.20.1: resolution: {integrity: sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==} engines: {node: '>= 0.4'} @@ -1013,6 +1124,10 @@ packages: resolution: {integrity: sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==} dev: true + /lodash-es/4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: true + /longest-streak/3.0.1: resolution: {integrity: sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==} dev: false @@ -1542,6 +1657,11 @@ packages: object-keys: 1.1.1 dev: false + /opentracing/0.14.7: + resolution: {integrity: sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==} + engines: {node: '>=0.10'} + dev: false + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -1570,6 +1690,10 @@ packages: engines: {node: '>=6'} dev: true + /promise-polyfill/8.2.3: + resolution: {integrity: sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg==} + dev: false + /property-information/5.6.0: resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} dependencies: @@ -1676,6 +1800,11 @@ packages: unist-util-visit: 1.4.1 dev: false + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + /resolve/1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -1745,6 +1874,10 @@ packages: resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} dev: false + /stackframe/0.3.1: + resolution: {integrity: sha512-XmoiF4T5nuWEp2x2w92WdGjdHGY/cZa6LIbRsDRQR/Xlk4uW0PAUlH1zJYVffocwKpCdwyuypIp25xsSXEtZHw==} + dev: false + /string.prototype.trimend/1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: @@ -1774,11 +1907,23 @@ packages: svelte: 3.46.4 dev: true + /svelte-sequential-preprocessor/0.0.7: + resolution: {integrity: sha512-xk974Ny77eiC8xpFPCVNopCfCW4ElWWlvWIv+c7psbjjb4UVRyhR8IJfwOuwnY5S3nduBOYoalY4eigB9YyqHA==} + engines: {node: '>=10'} + dependencies: + svelte: 3.46.4 + tslib: 2.3.1 + dev: true + /svelte/3.46.4: resolution: {integrity: sha512-qKJzw6DpA33CIa+C/rGp4AUdSfii0DOTCzj/2YpSKKayw5WGSS624Et9L1nU1k2OVRS9vaENQXp2CVZNU+xvIg==} engines: {node: '>= 8'} dev: true + /three/0.148.0: + resolution: {integrity: sha512-8uzVV+qhTPi0bOFs/3te3RW6hb3urL8jYEl6irjCWo/l6sr8MPNMcClFev/MMYeIxr0gmDcoXTy/8LXh/LXkfw==} + dev: true + /tiny-glob/0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} dependencies: @@ -1802,6 +1947,30 @@ packages: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false + /troika-three-text/0.46.4_three@0.148.0: + resolution: {integrity: sha512-Qsv0HhUKTZgSmAJs5wvO7YlBoJSP9TGPLmrg+K9pbQq4lseQdcevbno/WI38bwJBZ/qS56hvfqEzY0zUEFzDIw==} + peerDependencies: + three: '>=0.103.0' + dependencies: + bidi-js: 1.0.2 + three: 0.148.0 + troika-three-utils: 0.46.0_three@0.148.0 + troika-worker-utils: 0.46.0 + webgl-sdf-generator: 1.1.1 + dev: true + + /troika-three-utils/0.46.0_three@0.148.0: + resolution: {integrity: sha512-llHyrXAcwzr0bpg80GxsIp73N7FuImm4WCrKDJkAqcAsWmE5pfP9+Qzw+oMWK1P/AdHQ79eOrOl9NjyW4aOw0w==} + peerDependencies: + three: '>=0.103.0' + dependencies: + three: 0.148.0 + dev: true + + /troika-worker-utils/0.46.0: + resolution: {integrity: sha512-bzOx5f2ZBxkFhXtIvDJlLn2AI3bzCkGVbCndl/2dL5QZrwHEKl45OEIilCxYQQWJG1rEbOD9O80tMjoYjw19OA==} + dev: true + /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false @@ -1810,6 +1979,10 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false + /tslib/2.3.1: + resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} + dev: true + /twemoji-parser/13.1.0: resolution: {integrity: sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg==} dev: false @@ -2026,6 +2199,10 @@ packages: engines: {node: '>= 8'} dev: true + /webgl-sdf-generator/1.1.1: + resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} + dev: true + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: diff --git a/src/lib/apm.ts b/src/lib/apm.ts new file mode 100644 index 0000000..5eb93fc --- /dev/null +++ b/src/lib/apm.ts @@ -0,0 +1,22 @@ +import { browser } from '$app/environment'; +import { ApmBase, init as initApm } from '@elastic/apm-rum' + +var apm_: ApmBase; + +if(browser) { + apm_ = initApm({ + // Set required service name (allowed characters: a-z, A-Z, 0-9, -, _, and space) + serviceName: 'homepage', + + // Set custom APM Server URL (default: http://localhost:8200) + serverUrl: 'https://apm.elasticsearch.danbulant.cloud', + + // Set the service version (required for source map feature) + serviceVersion: import.meta.env.VITE_SENTRY_RELEASE, + + // Set the service environment + environment: import.meta.env.VITE_SENTRY_ENVIRONMENT || 'production' + }); +} + +export const apm = apm_; \ No newline at end of file diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index e1dc32b..7300406 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -4,7 +4,11 @@ import "virtual:windi.css"; import { browser, dev } from "$app/env"; import * as Sentry from '@sentry/browser'; + import { apm } from "$lib/apm"; + import { page } from "$app/stores"; + if (browser && dev) import("virtual:windi-devtools"); + export let data; if (browser && !dev) { @@ -14,6 +18,9 @@ release: import.meta.env.VITE_SENTRY_RELEASE, }); } + if(browser) { + apm.setInitialPageLoadName($page.route.id); + }