diff --git a/cspell.json b/cspell.json index 392fa7c4..c72244f6 100644 --- a/cspell.json +++ b/cspell.json @@ -30,6 +30,7 @@ "linksheet", "Maricopa", "mdsvex", + "navigations", "neteng", "netpro", "netwk", @@ -43,6 +44,8 @@ "ntfy", "obtainium", "posthog", + "prefs", + "reconsent", "SIEM", "SPDY", "stylelintignore", diff --git a/jsconfig.json b/jsconfig.json index b85ed0ba..08dd3bd0 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,11 +1,3 @@ -/* ========================================================================= -jsconfig.json - -Copyright © 2025 Network Pro Strategies (Network Pro™) -SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later -This file is part of Network Pro. -========================================================================= */ - { "extends": "./.svelte-kit/tsconfig.json", "compilerOptions": { @@ -19,12 +11,6 @@ This file is part of Network Pro. "strict": true, "moduleResolution": "bundler" }, - "exclude": ["vite.config.js"], // Exclude the config file if needed + "exclude": ["vite.config.js"], "include": ["src", "src/global.d.ts", "src/service-worker.js"] - - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - - // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes - // from the referenced tsconfig.json - TypeScript does not merge them in } diff --git a/jsconfig.template.jsonc b/jsconfig.template.jsonc new file mode 100644 index 00000000..14acf484 --- /dev/null +++ b/jsconfig.template.jsonc @@ -0,0 +1,32 @@ +/* ========================================================================= +jsconfig.template.jsonc + +NOTE: This file is for reference only and is not actively used by SvelteKit or tooling. SvelteKit uses the jsconfig.json file without comments for actual configuration. + +Copyright © 2025 Network Pro Strategies (Network Pro™) +SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later +This file is part of Network Pro. +========================================================================= */ + +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + }, + "exclude": ["vite.config.js"], // Exclude the config file if needed + "include": ["src", "src/global.d.ts", "src/service-worker.js"] + + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/netlify.toml b/netlify.toml index 4c139ff9..472e1c45 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,6 +1,5 @@ [build] command = "npm run build" - publish = "build" [build.environment] NODE_VERSION = "22" diff --git a/package-lock.json b/package-lock.json index 91fde67b..8ae2b201 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@networkpro/web", - "version": "1.10.2", + "version": "1.11.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@networkpro/web", - "version": "1.10.2", + "version": "1.11.0", "hasInstallScript": true, "license": "CC-BY-4.0 OR GPL-3.0-or-later", "dependencies": { @@ -21,11 +21,11 @@ "@lhci/cli": "^0.14.0", "@playwright/test": "^1.52.0", "@sveltejs/adapter-netlify": "^5.0.2", - "@sveltejs/kit": "2.21.1", - "@sveltejs/vite-plugin-svelte": "5.0.3", + "@sveltejs/kit": "2.21.2", + "@sveltejs/vite-plugin-svelte": "5.1.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/svelte": "^5.2.8", - "@vitest/coverage-v8": "^3.2.0", + "@vitest/coverage-v8": "^3.2.1", "autoprefixer": "^10.4.21", "browserslist": "^4.25.0", "eslint": "^9.28.0", @@ -52,7 +52,8 @@ "typescript": "^5.8.3", "vite": "^6.3.5", "vite-plugin-lightningcss": "^0.0.5", - "vitest": "^3.2.0" + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.2.1" }, "engines": { "node": ">=22.0.0 <25", @@ -129,9 +130,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.4.tgz", - "integrity": "sha512-BRmLHGwpUqLFR2jzx9orBuX/ABDkj2jLKOXrHDTN2aOKL+jFDDKaRNo9nyYsIl9h/UE/7lMKdDjKQQyxKKDZ7g==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, "license": "MIT", "dependencies": { @@ -2034,9 +2035,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.21.1", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.21.1.tgz", - "integrity": "sha512-vLbtVwtDcK8LhJKnFkFYwM0uCdFmzioQnif0bjEYH1I24Arz22JPr/hLUiXGVYAwhu8INKx5qrdvr4tHgPwX6w==", + "version": "2.21.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.21.2.tgz", + "integrity": "sha512-EMYTY4+rNa7TaRZYzCqhQslEkACEZzWc363jOYuc90oJrgvlWTcgqTxcGSIJim48hPaXwYlHyatRnnMmTFf5tA==", "dev": true, "license": "MIT", "dependencies": { @@ -2066,18 +2067,18 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.0.3.tgz", - "integrity": "sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-5.1.0.tgz", + "integrity": "sha512-wojIS/7GYnJDYIg1higWj2ROA6sSRWvcR1PO/bqEyFr/5UZah26c8Cz4u0NaqjPeVltzsVpt2Tm8d2io0V+4Tw==", "dev": true, "license": "MIT", "dependencies": { "@sveltejs/vite-plugin-svelte-inspector": "^4.0.1", - "debug": "^4.4.0", + "debug": "^4.4.1", "deepmerge": "^4.3.1", "kleur": "^4.1.5", - "magic-string": "^0.30.15", - "vitefu": "^1.0.4" + "magic-string": "^0.30.17", + "vitefu": "^1.0.6" }, "engines": { "node": "^18.0.0 || ^20.0.0 || >=22" @@ -2341,9 +2342,9 @@ } }, "node_modules/@vitest/coverage-v8": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.0.tgz", - "integrity": "sha512-HjgvaokAiHxRMI5ioXl4WmgAi4zQtKtnltOOlmpzUqApdcTTZrZJAastbbRGydtiqwtYLFaIb6Jpo3PzowZ0cg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.1.tgz", + "integrity": "sha512-6dy0uF/0BE3jpUW9bFzg0V2S4F7XVaZHL/7qma1XANvHPQGoJuc3wtx911zSoAgUnpfvcLVK1vancNJ95d+uxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2365,8 +2366,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.2.0", - "vitest": "3.2.0" + "@vitest/browser": "3.2.1", + "vitest": "3.2.1" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -2375,15 +2376,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.0.tgz", - "integrity": "sha512-0v4YVbhDKX3SKoy0PHWXpKhj44w+3zZkIoVES9Ex2pq+u6+Bijijbi2ua5kE+h3qT6LBWFTNZSCOEU37H8Y5sA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.1.tgz", + "integrity": "sha512-FqS/BnDOzV6+IpxrTg5GQRyLOCtcJqkwMwcS8qGCI2IyRVDwPAtutztaf1CjtPHlZlWtl1yUPCd7HM0cNiDOYw==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.0", - "@vitest/utils": "3.2.0", + "@vitest/spy": "3.2.1", + "@vitest/utils": "3.2.1", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -2392,13 +2393,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.0.tgz", - "integrity": "sha512-HFcW0lAMx3eN9vQqis63H0Pscv0QcVMo1Kv8BNysZbxcmHu3ZUYv59DS6BGYiGQ8F5lUkmsfMMlPm4DJFJdf/A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.1.tgz", + "integrity": "sha512-OXxMJnx1lkB+Vl65Re5BrsZEHc90s5NMjD23ZQ9NlU7f7nZiETGoX4NeKZSmsKjseuMq2uOYXdLOeoM0pJU+qw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.2.0", + "@vitest/spy": "3.2.1", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -2419,9 +2420,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.0.tgz", - "integrity": "sha512-gUUhaUmPBHFkrqnOokmfMGRBMHhgpICud9nrz/xpNV3/4OXCn35oG+Pl8rYYsKaTNd/FAIrqRHnwpDpmYxCYZw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.1.tgz", + "integrity": "sha512-xBh1X2GPlOGBupp6E1RcUQWIxw0w/hRLd3XyBS6H+dMdKTAqHDNsIR2AnJwPA3yYe9DFy3VUKTe3VRTrAiQ01g==", "dev": true, "license": "MIT", "dependencies": { @@ -2432,13 +2433,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.0.tgz", - "integrity": "sha512-bXdmnHxuB7fXJdh+8vvnlwi/m1zvu+I06i1dICVcDQFhyV4iKw2RExC/acavtDn93m/dRuawUObKsrNE1gJacA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.1.tgz", + "integrity": "sha512-kygXhNTu/wkMYbwYpS3z/9tBe0O8qpdBuC3dD/AW9sWa0LE/DAZEjnHtWA9sIad7lpD4nFW1yQ+zN7mEKNH3yA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.2.0", + "@vitest/utils": "3.2.1", "pathe": "^2.0.3" }, "funding": { @@ -2446,13 +2447,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.0.tgz", - "integrity": "sha512-z7P/EneBRMe7hdvWhcHoXjhA6at0Q4ipcoZo6SqgxLyQQ8KSMMCmvw1cSt7FHib3ozt0wnRHc37ivuUMbxzG/A==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.1.tgz", + "integrity": "sha512-5xko/ZpW2Yc65NVK9Gpfg2y4BFvcF+At7yRT5AHUpTg9JvZ4xZoyuRY4ASlmNcBZjMslV08VRLDrBOmUe2YX3g==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.0", + "@vitest/pretty-format": "3.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -2461,9 +2462,9 @@ } }, "node_modules/@vitest/spy": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.0.tgz", - "integrity": "sha512-s3+TkCNUIEOX99S0JwNDfsHRaZDDZZR/n8F0mop0PmsEbQGKZikCGpTGZ6JRiHuONKew3Fb5//EPwCP+pUX9cw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.1.tgz", + "integrity": "sha512-Nbfib34Z2rfcJGSetMxjDCznn4pCYPZOtQYox2kzebIJcgH75yheIKd5QYSFmR8DIZf2M8fwOm66qSDIfRFFfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2474,13 +2475,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.0.tgz", - "integrity": "sha512-gXXOe7Fj6toCsZKVQouTRLJftJwmvbhH5lKOBR6rlP950zUq9AitTUjnFoXS/CqjBC2aoejAztLPzzuva++XBw==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.1.tgz", + "integrity": "sha512-KkHlGhePEKZSub5ViknBcN5KEF+u7dSUr9NW8QsVICusUojrgrOnnY3DEWWO877ax2Pyopuk2qHmt+gkNKnBVw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.2.0", + "@vitest/pretty-format": "3.2.1", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -5213,6 +5214,13 @@ "dev": true, "license": "MIT" }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true, + "license": "MIT" + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -9447,9 +9455,9 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", "dev": true, "license": "MIT", "dependencies": { @@ -10488,6 +10496,27 @@ "tree-kill": "cli.js" } }, + "node_modules/tsconfck": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", + "dev": true, + "license": "MIT", + "bin": { + "tsconfck": "bin/tsconfck.js" + }, + "engines": { + "node": "^18 || >=20" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -10839,9 +10868,9 @@ } }, "node_modules/vite-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.0.tgz", - "integrity": "sha512-8Fc5Ko5Y4URIJkmMF/iFP1C0/OJyY+VGVe9Nw6WAdZyw4bTO+eVg9mwxWkQp/y8NnAoQY3o9KAvE1ZdA2v+Vmg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.1.tgz", + "integrity": "sha512-V4EyKQPxquurNJPtQJRZo8hKOoKNBRIhxcDbQFPFig0JdoWcUhwRgK8yoCXXrfYVPKS6XwirGHPszLnR8FbjCA==", "dev": true, "license": "MIT", "dependencies": { @@ -10872,6 +10901,26 @@ "lightningcss": "^1.19.0" } }, + "node_modules/vite-tsconfig-paths": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-5.1.4.tgz", + "integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^3.0.3" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, "node_modules/vite/node_modules/fdir": { "version": "6.4.5", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", @@ -10935,20 +10984,20 @@ } }, "node_modules/vitest": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.0.tgz", - "integrity": "sha512-P7Nvwuli8WBNmeMHHek7PnGW4oAZl9za1fddfRVidZar8wDZRi7hpznLKQePQ8JPLwSBEYDK11g+++j7uFJV8Q==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.1.tgz", + "integrity": "sha512-VZ40MBnlE1/V5uTgdqY3DmjUgZtIzsYq758JGlyQrv5syIsaYcabkfPkEuWML49Ph0D/SoqpVFd0dyVTr551oA==", "dev": true, "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.0", - "@vitest/mocker": "3.2.0", - "@vitest/pretty-format": "^3.2.0", - "@vitest/runner": "3.2.0", - "@vitest/snapshot": "3.2.0", - "@vitest/spy": "3.2.0", - "@vitest/utils": "3.2.0", + "@vitest/expect": "3.2.1", + "@vitest/mocker": "3.2.1", + "@vitest/pretty-format": "^3.2.1", + "@vitest/runner": "3.2.1", + "@vitest/snapshot": "3.2.1", + "@vitest/spy": "3.2.1", + "@vitest/utils": "3.2.1", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", @@ -10962,7 +11011,7 @@ "tinypool": "^1.1.0", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.0", + "vite-node": "3.2.1", "why-is-node-running": "^2.3.0" }, "bin": { @@ -10978,8 +11027,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.0", - "@vitest/ui": "3.2.0", + "@vitest/browser": "3.2.1", + "@vitest/ui": "3.2.1", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index 0679d401..1abd6229 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,7 @@ { "name": "@networkpro/web", "private": false, - "sideEffects": [ - "./.netlify/shims.js" - ], - "version": "1.10.2", + "version": "1.11.0", "description": "Locking Down Networks, Unlocking Confidence | Security, Networking, Privacy — Network Pro Strategies", "keywords": [ "advisory", @@ -47,6 +44,8 @@ "prepare": "svelte-kit sync || echo ''", "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", + "type-check": "svelte-check --tsconfig ./jsconfig.json", + "lint:types": "npm run type-check", "check:env": "node scripts/checkEnv.js", "check:node": "node scripts/checkNode.js", "checkout": "npm run check:node && npm run test:all && npm run lint:all && npm run check", @@ -88,11 +87,11 @@ "@lhci/cli": "^0.14.0", "@playwright/test": "^1.52.0", "@sveltejs/adapter-netlify": "^5.0.2", - "@sveltejs/kit": "2.21.1", - "@sveltejs/vite-plugin-svelte": "5.0.3", + "@sveltejs/kit": "2.21.2", + "@sveltejs/vite-plugin-svelte": "5.1.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/svelte": "^5.2.8", - "@vitest/coverage-v8": "^3.2.0", + "@vitest/coverage-v8": "^3.2.1", "autoprefixer": "^10.4.21", "browserslist": "^4.25.0", "eslint": "^9.28.0", @@ -119,7 +118,8 @@ "typescript": "^5.8.3", "vite": "^6.3.5", "vite-plugin-lightningcss": "^0.0.5", - "vitest": "^3.2.0" + "vite-tsconfig-paths": "^5.1.4", + "vitest": "^3.2.1" }, "overrides": { "@sveltejs/kit": { diff --git a/src/app.html b/src/app.html index 9809bc10..c3ec06b5 100644 --- a/src/app.html +++ b/src/app.html @@ -72,7 +72,7 @@ content="bx4ham0zkpvzztzu213bhpt76m9siq" /> - + diff --git a/src/hooks.server.js b/src/hooks.server.js index 63324693..45249cfb 100644 --- a/src/hooks.server.js +++ b/src/hooks.server.js @@ -91,3 +91,16 @@ export async function handle({ event, resolve }) { return response; } + +/** + * SvelteKit server-side error handler to log SSR errors. + * @type {import('@sveltejs/kit').HandleServerError} + */ +export function handleError({ error, event }) { + console.error("🔴 SSR Error in route:", event.url.pathname); + console.error(error); + + return { + message: "A server-side error occurred", + }; +} diff --git a/src/lib/components/Badges.svelte b/src/lib/components/Badges.svelte index 950d5e58..b9b6755e 100644 --- a/src/lib/components/Badges.svelte +++ b/src/lib/components/Badges.svelte @@ -10,10 +10,15 @@ This file is part of Network Pro. import { base } from "$app/paths"; // Import badges for licenses import { ccBadge, gplBadge } from "$lib"; + import { CONSTANTS } from "$lib"; // Log the base path to verify its value //console.log("Base path:", base); + console.log(CONSTANTS.COMPANY_INFO.APP_NAME); + + const { PAGE } = CONSTANTS; + const ccbyLink = `${base}/license#cc-by`; const gplLink = `${base}/license#gnu-gpl`; @@ -51,14 +56,13 @@ This file is part of Network Pro. -
{#each badges as badge} {#each row as link} diff --git a/src/lib/components/MetaTags.svelte b/src/lib/components/MetaTags.svelte index 5f034eaf..694cb885 100644 --- a/src/lib/components/MetaTags.svelte +++ b/src/lib/components/MetaTags.svelte @@ -10,10 +10,16 @@ This file is part of Network Pro. export let title; export let description; + import { CONSTANTS } from "$lib"; + + console.log(CONSTANTS.COMPANY_INFO.APP_NAME); + + const { COMPANY_INFO, LINKS } = CONSTANTS; + // Static shared values - const ogUrl = "https://netwk.pro"; + const ogUrl = LINKS.HOME; const ogImg = "/img/banner-og-1200x630.png"; - const companyName = "Network Pro Strategies"; + const companyName = COMPANY_INFO.NAME; const twitterAct = "@NetEng_Pro"; diff --git a/src/lib/components/PostHog.svelte b/src/lib/components/PostHog.svelte deleted file mode 100644 index 354fd9ae..00000000 --- a/src/lib/components/PostHog.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/src/lib/components/stores/.gitkeep b/src/lib/components/stores/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/lib/index.js b/src/lib/index.js index eface273..383e1448 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -13,7 +13,7 @@ This file is part of Network Pro. * @description Main export point for library components, utilities, and assets * @module src/lib * @author SunDevil311 - * @updated 2025-06-02 + * @updated 2025-06-03 */ // Re-export images from dedicated images.js file @@ -32,38 +32,8 @@ export * from "./images.js"; // export { default as Button } from './components/Button.svelte'; // export { default as Card } from './components/Card.svelte'; -/** - * @typedef {{ - * NAME: string, - * APP_NAME: string, - * YEAR: string - * }} CompanyInfo - * - * @typedef {{ - * EMAIL: string, - * SECURE: string, - * PRIVACY: string, - * PHONE: string - * }} ContactInfo - * - * @typedef {{ - * BLANK: string, - * SELF: string, - * REL: string - * }} PageTargets - * - * @typedef {{ - * BACKTOP: string, - * HREFTOP: string - * }} NavigationLabels - * - * @typedef {{ - * COMPANY_INFO: CompanyInfo, - * CONTACT: ContactInfo, - * PAGE: PageTargets, - * NAV: NavigationLabels - * }} AppConstants - */ +/** @typedef {import('./types/appConstants.js').AppConstants} AppConstants */ + /** @type {AppConstants} */ export const CONSTANTS = { @@ -87,4 +57,8 @@ export const CONSTANTS = { BACKTOP: "Back to top", HREFTOP: "#top", }, + LINKS: { + HOME: "https://netwk.pro", + BLOG: "https://blog.netwk.pro", + }, }; diff --git a/src/lib/pages/PrivacyContent.svelte b/src/lib/pages/PrivacyContent.svelte index 13188132..0df87aca 100644 --- a/src/lib/pages/PrivacyContent.svelte +++ b/src/lib/pages/PrivacyContent.svelte @@ -9,43 +9,45 @@ This file is part of Network Pro. @@ -241,10 +267,17 @@ This file is part of Network Pro.

Tracking Preferences

-

- Tracking Status: - {trackingStatus} -

+ {#if $trackingStatus !== "⏳ Checking tracking preferences..."} +

+ Tracking Status: + {$trackingStatus} +

+ {:else} +

+ Tracking Status: + Loading… +

+ {/if}
- + import { base } from "$app/paths"; + import { CONSTANTS } from "$lib"; // Log the base path to verify its value //console.log("Base path:", base); + console.log(CONSTANTS.COMPANY_INFO.APP_NAME); + + const { PAGE } = CONSTANTS; + const termsLink = `${base}/terms-of-use`; const privacyLink = `${base}/privacy`; const licenseLink = `${base}/license`; @@ -62,7 +67,7 @@ This file is part of Network Pro.
- + {link.text}