@networkpro/web 1.6.5 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODE_OF_CONDUCT.md +2 -2
- package/LICENSE.md +20 -9
- package/README.md +57 -13
- package/_redirects +1 -0
- package/cspell.json +2 -0
- package/package.json +7 -7
- package/playwright.config.js +1 -0
- package/src/lib/components/FullWidthSection.svelte +19 -4
- package/src/lib/components/LegalNav.svelte +31 -29
- package/src/lib/components/PostHog.svelte +20 -8
- package/src/lib/components/layout/Footer.svelte +1 -1
- package/src/lib/components/layout/HeaderDefault.svelte +2 -2
- package/src/lib/components/layout/HeaderHome.svelte +2 -2
- package/src/lib/images.js +3 -2
- package/src/lib/index.js +2 -1
- package/src/lib/meta.js +6 -1
- package/src/lib/pages/LicenseContent.svelte +17 -17
- package/src/lib/pages/PrivacyContent.svelte +116 -6
- package/src/lib/pages/PrivacyDashboard.svelte +240 -0
- package/src/lib/pages/TermsUseContent.svelte +1 -1
- package/src/lib/styles/css/default.css +23 -10
- package/src/lib/styles/global.min.css +1 -3
- package/src/lib/utils/privacy.js +18 -3
- package/src/lib/utils/trackingCookies.js +40 -0
- package/src/lib/utils/trackingStatus.js +46 -0
- package/src/lib/utils/utm.js +8 -1
- package/src/routes/about/+page.svelte +1 -7
- package/src/routes/foss-spotlight/+page.svelte +1 -7
- package/src/routes/license/+page.svelte +2 -8
- package/src/routes/privacy/+page.server.js +18 -0
- package/src/routes/{privacy-policy → privacy}/+page.svelte +5 -11
- package/src/routes/{privacy-policy → privacy-dashboard}/+page.server.js +2 -2
- package/src/routes/privacy-dashboard/+page.svelte +69 -0
- package/src/routes/terms-conditions/+page.svelte +2 -8
- package/src/routes/terms-of-use/+page.svelte +2 -8
- package/src/service-worker.js +31 -6
- package/static/robots.txt +2 -1
- package/static/sitemap.xml +10 -22
- package/tests/e2e/app.spec.js +50 -68
- package/tests/e2e/mobile.spec.js +32 -42
- package/tests/e2e/shared/helpers.js +57 -0
package/CODE_OF_CONDUCT.md
CHANGED
|
@@ -155,7 +155,7 @@ For answers to common questions about this code of conduct, see the FAQ at
|
|
|
155
155
|
<div style="font-size: 12px; font-weight: bold; text-align: center;">
|
|
156
156
|
|
|
157
157
|
[Home](https://netwk.pro) | [Terms of Use](https://netwk.pro/terms-of-use)
|
|
158
|
-
[Privacy Policy](https://netwk.pro/privacy
|
|
158
|
+
[Privacy Policy](https://netwk.pro/privacy) | [Legal](https://netwk.pro/license)
|
|
159
159
|
|
|
160
160
|
</div>
|
|
161
161
|
|
|
@@ -166,7 +166,7 @@ For answers to common questions about this code of conduct, see the FAQ at
|
|
|
166
166
|
Copyright © 2025
|
|
167
167
|
**[Network Pro Strategies](https://netwk.pro/)** (Network Pro™)
|
|
168
168
|
|
|
169
|
-
Network Pro™, the shield logo, and the "Locking Down Networks™" slogan are [trademarks](https://netwk.pro/
|
|
169
|
+
Network Pro™, the shield logo, and the "Locking Down Networks™" slogan are [trademarks](https://netwk.pro/license#trademark) of Network Pro Strategies.
|
|
170
170
|
|
|
171
171
|
Licensed under **[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)** and the **[GNU GPL](https://spdx.org/licenses/GPL-3.0-or-later.html)**, as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
172
172
|
|
package/LICENSE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!--
|
|
1
|
+
<!-- =====================================================================
|
|
2
2
|
LICENSE.md
|
|
3
3
|
|
|
4
4
|
Copyright © 2025 Network Pro Strategies (Network Pro™)
|
|
@@ -14,7 +14,7 @@ This file is part of Network Pro.
|
|
|
14
14
|
# Legal, Copyright, and Licensing
|
|
15
15
|
|
|
16
16
|
**Network Pro Strategies**
|
|
17
|
-
**Effective Date:** May
|
|
17
|
+
**Effective Date:** May 28, 2025
|
|
18
18
|
|
|
19
19
|
**Official Version Notice**
|
|
20
20
|
This document is provided for convenience only. In the event of any discrepancy, the authoritative version is the one published at [https://netwk.pro](https://netwk.pro).
|
|
@@ -38,8 +38,9 @@ This document is provided for convenience only. In the event of any discrepancy,
|
|
|
38
38
|
9. [Third-Party Code and Licenses](#third-party)
|
|
39
39
|
10. [Prohibited Uses](#prohibited-uses)
|
|
40
40
|
11. [Modifications and Liability Disclaimer](#disclaimer)
|
|
41
|
-
12. [
|
|
41
|
+
12. [Authoritative Version Clause](#version)
|
|
42
42
|
13. [Revisions](#revisions)
|
|
43
|
+
14. [Contact](#contact)
|
|
43
44
|
|
|
44
45
|
---
|
|
45
46
|
|
|
@@ -191,12 +192,13 @@ Modifications, redistribution, or any use of the Licensed Material are performed
|
|
|
191
192
|
|
|
192
193
|
<sub>[Back to top](#top)</sub>
|
|
193
194
|
|
|
194
|
-
<a name="
|
|
195
|
+
<a name="version"></a>
|
|
195
196
|
|
|
196
|
-
## 12.
|
|
197
|
+
## 12. Authoritative Version Clause
|
|
197
198
|
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
In the event of any discrepancy between different versions, formats, or distributions of any legal document issued by the Company—including but not limited to license terms, policies, notices, or agreements—the version published on the Company's primary website at [https://netwk.pro](https://netwk.pro) shall be deemed the official and controlling version.
|
|
200
|
+
|
|
201
|
+
It is your responsibility to review the most current version of any applicable legal document before relying on its contents. Continued use of the Company's materials, services, or Licensed Material constitutes acceptance of the most current version then in effect.
|
|
200
202
|
|
|
201
203
|
<sub>[Back to top](#top)</sub>
|
|
202
204
|
|
|
@@ -208,14 +210,21 @@ This legal page may be updated to comply with legal or operational changes. The
|
|
|
208
210
|
|
|
209
211
|
<sub>[Back to top](#top)</sub>
|
|
210
212
|
|
|
211
|
-
<a name="
|
|
213
|
+
<a name="contact"></a>
|
|
214
|
+
|
|
215
|
+
## 14. Contact
|
|
216
|
+
|
|
217
|
+
The Company may be contacted via our [contact form](https://netwk.pro/contact) or by email at:
|
|
218
|
+
📧 `contact (at) s.neteng.pro`
|
|
219
|
+
|
|
220
|
+
<sub>[Back to top](#top)</sub>
|
|
212
221
|
|
|
213
222
|
---
|
|
214
223
|
|
|
215
224
|
<div style="font-size: 12px; font-weight: bold; text-align: center;">
|
|
216
225
|
|
|
217
226
|
[Home](https://netwk.pro) | [Terms of Use](https://netwk.pro/terms-of-use)
|
|
218
|
-
[Privacy Policy](https://netwk.pro/privacy
|
|
227
|
+
[Privacy Policy](https://netwk.pro/privacy) | Legal
|
|
219
228
|
|
|
220
229
|
</div>
|
|
221
230
|
|
|
@@ -231,3 +240,5 @@ Network Pro™, the shield logo, and the "Locking Down Networks™" slog
|
|
|
231
240
|
Licensed under **[CC BY 4.0](#cc-by)** and the **[GNU GPL](#gnu-gpl)**, as published by the [Free Software Foundation](https://www.fsf.org), either version 3 of the License, or (at your option) any later version.
|
|
232
241
|
|
|
233
242
|
</div>
|
|
243
|
+
|
|
244
|
+
<!-- cspell:ignore dlnotes >
|
package/README.md
CHANGED
|
@@ -31,10 +31,14 @@ All infrastructure and data flows are designed with **maximum transparency, self
|
|
|
31
31
|
```bash
|
|
32
32
|
.
|
|
33
33
|
├── .github/workflows/ # CI workflows and automation
|
|
34
|
-
├── .vscode/
|
|
34
|
+
├── .vscode/
|
|
35
|
+
│ ├── customData.json # Custom CSS data for FontAwesome icons
|
|
36
|
+
│ ├── extensions.json # Recommended VSCodium / VS Code extensions
|
|
37
|
+
│ ├── extensions.jsonc # Commented version of extensions.json for reference
|
|
38
|
+
│ └── settings.json # User settings for VSCodium / VS Code
|
|
35
39
|
├── netlify-functions/
|
|
36
40
|
│ └── cspReport.js # Serverless function to receive and log CSP violation reports
|
|
37
|
-
├── scripts/ #
|
|
41
|
+
├── scripts/ # General utility scripts
|
|
38
42
|
├── src/
|
|
39
43
|
│ ├── lib/ # Reusable components, styles, utilities
|
|
40
44
|
│ ├── routes/ # SvelteKit routes (+page.svelte, +page.server.js)
|
|
@@ -43,13 +47,33 @@ All infrastructure and data flows are designed with **maximum transparency, self
|
|
|
43
47
|
│ ├── app.html # SvelteKit entry HTML with CSP/meta/bootentry
|
|
44
48
|
│ └── service-worker.js # Custom Service Worker
|
|
45
49
|
├── static/ # Static assets served at root
|
|
50
|
+
│ ├── manifest.json # Manifest file for PWA configuration
|
|
51
|
+
│ ├── robots.txt # Instructions for web robots
|
|
52
|
+
│ └── sitemap.xml # Sitemap for search engines
|
|
46
53
|
├── tests/
|
|
47
54
|
│ ├── e2e/ # End-to-end Playwright tests
|
|
48
55
|
│ └── unit/ # Vite unit tests
|
|
56
|
+
├── _redirects # Netlify redirects
|
|
49
57
|
├── netlify.toml # Netlify configuration
|
|
50
58
|
└── ...
|
|
51
59
|
```
|
|
52
60
|
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### E2E Test Structure
|
|
64
|
+
|
|
65
|
+
End-to-end tests are located in `tests/e2e/` and organized by feature or route:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
tests/
|
|
69
|
+
├── e2e/
|
|
70
|
+
│ ├── app.spec.js # Desktop and mobile route tests
|
|
71
|
+
│ ├── mobile.spec.js # Mobile-specific assertions
|
|
72
|
+
│ └── shared/
|
|
73
|
+
│ └── helpers.js # Shared test utilities (e.g., getFooter, setDesktopView, setMobileView)
|
|
74
|
+
└── ...
|
|
75
|
+
```
|
|
76
|
+
|
|
53
77
|
---
|
|
54
78
|
|
|
55
79
|
## 🛠 Getting Started
|
|
@@ -180,7 +204,7 @@ Located at `src/hooks.server.js`, this file is responsible for injecting dynamic
|
|
|
180
204
|
To re-enable nonce generation for inline scripts in the future:
|
|
181
205
|
|
|
182
206
|
1. Uncomment the nonce generation and injection logic in `hooks.server.js`.
|
|
183
|
-
2. Add `nonce="
|
|
207
|
+
2. Add `nonce="__cspNonce__"` to inline `<script>` blocks in `app.html` or route templates.
|
|
184
208
|
|
|
185
209
|
> 💡 The `[headers]` block in `netlify.toml` has been deprecated — all headers are now set dynamically from within SvelteKit.
|
|
186
210
|
|
|
@@ -244,6 +268,24 @@ This project uses a mix of automated performance, accessibility, and end-to-end
|
|
|
244
268
|
|
|
245
269
|
|
|
246
270
|
|
|
271
|
+
### E2E Setup
|
|
272
|
+
|
|
273
|
+
Playwright is included in `devDependencies` and installed automatically with:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
npm install
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
To install browser dependencies (required once):
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
npx playwright install
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
> This downloads the browser binaries (Chromium, Firefox, WebKit) used for testing. You only need to run this once per machine or after a fresh clone.
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
247
289
|
### Running Tests
|
|
248
290
|
|
|
249
291
|
Local testing via Vitest and Playwright:
|
|
@@ -254,9 +296,11 @@ npm run test:server # Run server-side unit tests with Vitest
|
|
|
254
296
|
npm run test:all # Run full test suite
|
|
255
297
|
npm run test:watch # Watch mode for client tests
|
|
256
298
|
npm run test:coverage # Collect code coverage reports
|
|
257
|
-
npm run test:e2e # Runs Playwright E2E tests
|
|
299
|
+
npm run test:e2e # Runs Playwright E2E tests (with one retry on failure)
|
|
258
300
|
```
|
|
259
301
|
|
|
302
|
+
> Playwright will retry failed tests once `(--retries=1)` to reduce false negatives from transient flakiness (network, render delay, etc.).
|
|
303
|
+
|
|
260
304
|
Audit your app using Lighthouse:
|
|
261
305
|
|
|
262
306
|
```bash
|
|
@@ -399,15 +443,15 @@ The following CLI commands are available via `npm run <script>` or `pnpm run <sc
|
|
|
399
443
|
|
|
400
444
|
<!-- markdownlint-enable MD024 -->
|
|
401
445
|
|
|
402
|
-
| Script | Description
|
|
403
|
-
| --------------- |
|
|
404
|
-
| `test` | Alias for `test:all`
|
|
405
|
-
| `test:all` | Run both client and server test suites
|
|
406
|
-
| `test:client` | Run client tests with Vitest
|
|
407
|
-
| `test:server` | Run server-side tests with Vitest
|
|
408
|
-
| `test:watch` | Watch mode for client tests
|
|
409
|
-
| `test:coverage` | Collect coverage from both client and server
|
|
410
|
-
| `test:e2e` |
|
|
446
|
+
| Script | Description |
|
|
447
|
+
| --------------- | ------------------------------------------------------ |
|
|
448
|
+
| `test` | Alias for `test:all` |
|
|
449
|
+
| `test:all` | Run both client and server test suites |
|
|
450
|
+
| `test:client` | Run client tests with Vitest |
|
|
451
|
+
| `test:server` | Run server-side tests with Vitest |
|
|
452
|
+
| `test:watch` | Watch mode for client tests |
|
|
453
|
+
| `test:coverage` | Collect coverage from both client and server |
|
|
454
|
+
| `test:e2e` | Runs E2E tests with up to 1 automatic retry on failure |
|
|
411
455
|
|
|
412
456
|
---
|
|
413
457
|
|
package/_redirects
CHANGED
package/cspell.json
CHANGED
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"./.netlify/shims.js"
|
|
6
6
|
],
|
|
7
|
-
"version": "1.
|
|
7
|
+
"version": "1.7.2",
|
|
8
8
|
"description": "Locking Down Networks, Unlocking Confidence | Security, Networking, Privacy — Network Pro Strategies",
|
|
9
9
|
"keywords": [
|
|
10
10
|
"advisory",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"test:server": "vitest --config vitest.config.server.js",
|
|
61
61
|
"test:watch": "vitest --config vitest.config.client.js --watch",
|
|
62
62
|
"test:coverage": "npm run test:client -- --run --coverage && npm run test:server -- --run --coverage",
|
|
63
|
-
"test:e2e": "npx playwright test",
|
|
63
|
+
"test:e2e": "npx playwright test --retries=1",
|
|
64
64
|
"lint": "eslint . --ext .mjs,.js,.svelte",
|
|
65
65
|
"lint:fix": "eslint . --ext .mjs,.js,.svelte --fix",
|
|
66
66
|
"lint:jsdoc": "eslint . --ext .js,.mjs,.svelte --max-warnings=0",
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"nodemailer": "^7.0.3",
|
|
81
|
-
"posthog-js": "^1.
|
|
81
|
+
"posthog-js": "^1.248.1",
|
|
82
82
|
"semver": "^7.7.2",
|
|
83
|
-
"svelte": "5.33.
|
|
83
|
+
"svelte": "5.33.10"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@eslint/compat": "^1.2.9",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"@testing-library/svelte": "^5.2.8",
|
|
95
95
|
"@vitest/coverage-v8": "^3.1.4",
|
|
96
96
|
"autoprefixer": "^10.4.21",
|
|
97
|
-
"browserslist": "^4.
|
|
97
|
+
"browserslist": "^4.25.0",
|
|
98
98
|
"eslint": "^9.27.0",
|
|
99
99
|
"eslint-config-prettier": "^10.1.5",
|
|
100
100
|
"eslint-plugin-jsdoc": "^50.6.17",
|
|
@@ -106,10 +106,10 @@
|
|
|
106
106
|
"markdownlint-cli2": "^0.18.1",
|
|
107
107
|
"mdsvex": "^0.12.6",
|
|
108
108
|
"playwright": "^1.52.0",
|
|
109
|
-
"postcss": "^8.5.
|
|
109
|
+
"postcss": "^8.5.4",
|
|
110
110
|
"prettier": "^3.5.3",
|
|
111
111
|
"prettier-plugin-svelte": "^3.4.0",
|
|
112
|
-
"stylelint": "^16.
|
|
112
|
+
"stylelint": "^16.20.0",
|
|
113
113
|
"stylelint-config-html": "^1.1.0",
|
|
114
114
|
"stylelint-config-recommended": "^16.0.0",
|
|
115
115
|
"stylelint-order": "^7.0.0",
|
package/playwright.config.js
CHANGED
|
@@ -36,6 +36,7 @@ export default defineConfig({
|
|
|
36
36
|
baseURL: "http://localhost:4173?nosw", // Update to use preview server URL
|
|
37
37
|
trace: "on-first-retry",
|
|
38
38
|
timeout: 60000, // Default action timeout of 60 seconds for each step
|
|
39
|
+
navigationTimeout: 60000, // Timeout for navigation operations
|
|
39
40
|
},
|
|
40
41
|
|
|
41
42
|
/* Configure projects */
|
|
@@ -7,13 +7,28 @@ This file is part of Network Pro.
|
|
|
7
7
|
========================================================================== -->
|
|
8
8
|
|
|
9
9
|
<script>
|
|
10
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Optional: Allows vertical centering of the section
|
|
12
|
+
* @type {boolean}
|
|
13
|
+
*/
|
|
14
|
+
export let centered = false;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Additional classes for the outer full-width wrapper
|
|
18
|
+
* @type {string}
|
|
19
|
+
*/
|
|
20
|
+
export let outerClass = "";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Additional classes for the inner container
|
|
24
|
+
* @type {string}
|
|
25
|
+
*/
|
|
26
|
+
export let containerClass = "";
|
|
11
27
|
</script>
|
|
12
28
|
|
|
13
|
-
<div class=
|
|
14
|
-
<div class=
|
|
29
|
+
<div class={`full-width-section ${centered ? "centered" : ""} ${outerClass}`}>
|
|
30
|
+
<div class={`container ${containerClass}`}>
|
|
15
31
|
<slot></slot>
|
|
16
|
-
<!-- Slot to allow child content -->
|
|
17
32
|
</div>
|
|
18
33
|
</div>
|
|
19
34
|
|
|
@@ -13,15 +13,15 @@ This file is part of Network Pro.
|
|
|
13
13
|
//console.log("Base path:", base);
|
|
14
14
|
|
|
15
15
|
const termsLink = `${base}/terms-of-use`;
|
|
16
|
-
const privacyLink = `${base}/privacy
|
|
16
|
+
const privacyLink = `${base}/privacy`;
|
|
17
17
|
const licenseLink = `${base}/license`;
|
|
18
|
+
const pdashLink = `${base}/privacy-dashboard`;
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Navigation link object.
|
|
21
22
|
* @typedef {Object} NavLink
|
|
22
23
|
* @property {string} href - The URL the link points to.
|
|
23
24
|
* @property {string} text - The text displayed for the link.
|
|
24
|
-
* @property {string} target - Specifies where to open the link (e.g., "_self" or "_blank").
|
|
25
25
|
* @property {number} [colspan] - Optional property to specify column span for the table cell.
|
|
26
26
|
*/
|
|
27
27
|
|
|
@@ -31,46 +31,48 @@ This file is part of Network Pro.
|
|
|
31
31
|
*/
|
|
32
32
|
const rows = [
|
|
33
33
|
[
|
|
34
|
-
{
|
|
35
|
-
href: termsLink,
|
|
36
|
-
text: "Terms of Use",
|
|
37
|
-
target: "_self",
|
|
38
|
-
},
|
|
39
34
|
{
|
|
40
35
|
href: privacyLink,
|
|
41
36
|
text: "Privacy Policy",
|
|
42
|
-
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
href: pdashLink,
|
|
40
|
+
text: "Privacy Dashboard",
|
|
43
41
|
},
|
|
44
42
|
],
|
|
45
43
|
[
|
|
44
|
+
{
|
|
45
|
+
href: termsLink,
|
|
46
|
+
text: "Terms of Use",
|
|
47
|
+
},
|
|
46
48
|
{
|
|
47
49
|
href: licenseLink,
|
|
48
50
|
text: "Legal",
|
|
49
|
-
target: "_self",
|
|
50
|
-
colspan: 2,
|
|
51
51
|
},
|
|
52
52
|
],
|
|
53
53
|
];
|
|
54
54
|
</script>
|
|
55
55
|
|
|
56
56
|
<!-- BEGIN LEGAL NAVIGATION -->
|
|
57
|
-
<
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
class=
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
</
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
</
|
|
74
|
-
</
|
|
75
|
-
</
|
|
57
|
+
<nav aria-label="Legal navigation">
|
|
58
|
+
<div class="bnav-wrap">
|
|
59
|
+
<table class="bnav">
|
|
60
|
+
<tbody>
|
|
61
|
+
{#each rows as row}
|
|
62
|
+
<tr>
|
|
63
|
+
{#each row as link}
|
|
64
|
+
<td class="bnav-cell" colspan={link.colspan || 1}>
|
|
65
|
+
<a href={link.href} target="_self">
|
|
66
|
+
{link.text}
|
|
67
|
+
</a>
|
|
68
|
+
</td>
|
|
69
|
+
{/each}
|
|
70
|
+
</tr>
|
|
71
|
+
{/each}
|
|
72
|
+
</tbody>
|
|
73
|
+
</table>
|
|
74
|
+
</div>
|
|
75
|
+
</nav>
|
|
76
76
|
<!-- END LEGAL NAVIGATION -->
|
|
77
|
+
|
|
78
|
+
<!-- cspell:ignore pdash bnav -->
|
|
@@ -10,15 +10,27 @@ This file is part of Network Pro.
|
|
|
10
10
|
import posthog from "posthog-js";
|
|
11
11
|
import { onMount } from "svelte";
|
|
12
12
|
import { browser } from "$app/environment";
|
|
13
|
+
import { shouldTrackUser } from "$lib/utils/privacy.js";
|
|
13
14
|
|
|
14
|
-
// cspell:disable
|
|
15
15
|
onMount(() => {
|
|
16
|
-
if (browser)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
if (!browser) return;
|
|
17
|
+
|
|
18
|
+
const allowTracking = shouldTrackUser();
|
|
19
|
+
|
|
20
|
+
// cspell:disable-next-line
|
|
21
|
+
posthog.init("phc_Qshfo6AXzh4pS7aPigfqyeo4qj1qlyh7gDuHDeVMSR0", {
|
|
22
|
+
api_host: "https://us.i.posthog.com",
|
|
23
|
+
loaded: (ph) => {
|
|
24
|
+
if (!allowTracking) {
|
|
25
|
+
console.log("[PostHog] ⛔ User opted out — disabling tracking");
|
|
26
|
+
ph.opt_out_capturing(); // Fully disable any tracking
|
|
27
|
+
} else {
|
|
28
|
+
console.log("[PostHog] ✅ Tracking enabled");
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
autocapture: allowTracking, // Optional: Disable autocapture
|
|
32
|
+
capture_pageview: allowTracking, // Optional: Disable initial pageview
|
|
33
|
+
person_profiles: "identified_only",
|
|
34
|
+
});
|
|
22
35
|
});
|
|
23
|
-
//cspell:enable
|
|
24
36
|
</script>
|
|
@@ -14,7 +14,7 @@ This file is part of Network Pro.
|
|
|
14
14
|
import { bySvg, ccSvg } from "$lib";
|
|
15
15
|
|
|
16
16
|
// Log the base path to verify its value
|
|
17
|
-
console.log("Base path:", base);
|
|
17
|
+
//console.log("Base path:", base);
|
|
18
18
|
|
|
19
19
|
// Dynamic links for licensing and trademark
|
|
20
20
|
const ccbyLink = `${base}/license#cc-by`;
|
|
@@ -10,7 +10,7 @@ This file is part of Network Pro.
|
|
|
10
10
|
import { base } from "$app/paths";
|
|
11
11
|
|
|
12
12
|
// Log the base path to verify its value
|
|
13
|
-
console.log("Base path:", base);
|
|
13
|
+
//console.log("Base path:", base);
|
|
14
14
|
|
|
15
15
|
const homeLink = base || "/";
|
|
16
16
|
const aboutLink = `${base}/about`;
|
|
@@ -62,7 +62,7 @@ This file is part of Network Pro.
|
|
|
62
62
|
</script>
|
|
63
63
|
|
|
64
64
|
<!-- BEGIN DEFAULT HEADER -->
|
|
65
|
-
<nav class="center-nav">
|
|
65
|
+
<nav class="center-nav" aria-label="Site navigation">
|
|
66
66
|
{#each nav as { label, href, target, external }, index}
|
|
67
67
|
<a {href} {target} rel={external ? rel : undefined}>
|
|
68
68
|
{label}
|
|
@@ -10,7 +10,7 @@ This file is part of Network Pro.
|
|
|
10
10
|
import { base } from "$app/paths";
|
|
11
11
|
|
|
12
12
|
// Log the base path to verify its value
|
|
13
|
-
console.log("Base path:", base);
|
|
13
|
+
//console.log("Base path:", base);
|
|
14
14
|
|
|
15
15
|
const aboutLink = `${base}/about`;
|
|
16
16
|
const fossLink = `${base}/foss-spotlight`;
|
|
@@ -60,7 +60,7 @@ This file is part of Network Pro.
|
|
|
60
60
|
</script>
|
|
61
61
|
|
|
62
62
|
<!-- BEGIN HOME HEADER -->
|
|
63
|
-
<nav class="center-nav">
|
|
63
|
+
<nav class="center-nav" aria-label="Homepage navigation">
|
|
64
64
|
{#each nav as { label, href, target, external }, index}
|
|
65
65
|
<a {href} {target} rel={external ? rel : undefined}>
|
|
66
66
|
{label}
|
package/src/lib/images.js
CHANGED
|
@@ -10,11 +10,12 @@ This file is part of Network Pro.
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Image import utility
|
|
13
|
-
* Provides convenient access to images in the src/lib/img directory
|
|
14
13
|
*
|
|
14
|
+
* @file images.js
|
|
15
|
+
* @description Provides convenient access to images in the src/lib/img directory
|
|
15
16
|
* @module src/lib
|
|
16
17
|
* @author SunDevil311
|
|
17
|
-
* @updated 2025-05-
|
|
18
|
+
* @updated 2025-05-28
|
|
18
19
|
*/
|
|
19
20
|
|
|
20
21
|
// Import favicon images
|
package/src/lib/index.js
CHANGED
|
@@ -8,8 +8,9 @@ This file is part of Network Pro.
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Library index file
|
|
11
|
-
* Main export point for library components, utilities, and assets
|
|
12
11
|
*
|
|
12
|
+
* @file index.js
|
|
13
|
+
* @description Main export point for library components, utilities, and assets
|
|
13
14
|
* @module src/lib
|
|
14
15
|
* @author SunDevil311
|
|
15
16
|
* @updated 2025-05-14
|
package/src/lib/meta.js
CHANGED
|
@@ -26,7 +26,7 @@ const meta = {
|
|
|
26
26
|
title: "About Us — Network Pro™",
|
|
27
27
|
description: "About Us | Security, Networking, Privacy — Network Pro™",
|
|
28
28
|
},
|
|
29
|
-
"/privacy
|
|
29
|
+
"/privacy": {
|
|
30
30
|
title: "Privacy Policy — Network Pro™",
|
|
31
31
|
description:
|
|
32
32
|
"Privacy Policy | Security, Networking, Privacy — Network Pro™",
|
|
@@ -51,6 +51,11 @@ const meta = {
|
|
|
51
51
|
description:
|
|
52
52
|
"FOSS Spotlight | Security, Networking, Privacy — Network Pro™",
|
|
53
53
|
},
|
|
54
|
+
"/privacy-dashboard": {
|
|
55
|
+
title: "Privacy Dashboard — Network Pro™",
|
|
56
|
+
description:
|
|
57
|
+
"Privacy Dashboard | Security, Networking, Privacy — Network Pro™",
|
|
58
|
+
},
|
|
54
59
|
// Excludes redirect-only routes like /contact, /consultation, /privacy-rights
|
|
55
60
|
};
|
|
56
61
|
|
|
@@ -51,9 +51,9 @@ This file is part of Network Pro.
|
|
|
51
51
|
{ id: "third-party", text: "Third-Party Code and Licenses" },
|
|
52
52
|
{ id: "prohibited-uses", text: "Prohibited Uses" },
|
|
53
53
|
{ id: "disclaimer", text: "Modifications and Liability Disclaimer" },
|
|
54
|
-
{ id: "contact", text: "Contact" },
|
|
55
|
-
{ id: "revisions", text: "Revisions" },
|
|
56
54
|
{ id: "authoritative", text: "Authoritative Version Clause" },
|
|
55
|
+
{ id: "revisions", text: "Revisions" },
|
|
56
|
+
{ id: "contact", text: "Contact" },
|
|
57
57
|
];
|
|
58
58
|
|
|
59
59
|
/**
|
|
@@ -62,7 +62,7 @@ This file is part of Network Pro.
|
|
|
62
62
|
*/
|
|
63
63
|
const constants = {
|
|
64
64
|
company: "Network Pro Strategies",
|
|
65
|
-
effectiveDate: "May
|
|
65
|
+
effectiveDate: "May 28, 2025",
|
|
66
66
|
classSmall: "small-text",
|
|
67
67
|
rel: "noopener noreferrer",
|
|
68
68
|
hrefTop: "#top",
|
|
@@ -472,20 +472,6 @@ This file is part of Network Pro.
|
|
|
472
472
|
—including, without limitation, any claims or disputes brought by third parties,
|
|
473
473
|
whether in contract, tort, or otherwise.
|
|
474
474
|
</p>
|
|
475
|
-
{:else if link.id === "contact"}
|
|
476
|
-
<p>
|
|
477
|
-
The Company can be contacted via our
|
|
478
|
-
<a rel={constants.rel} href={contactLink} target={constants.targetBlank}
|
|
479
|
-
>contact form</a>
|
|
480
|
-
or by email at:<br />
|
|
481
|
-
📧 <code>contact (at) s.neteng.pro</code>
|
|
482
|
-
</p>
|
|
483
|
-
{:else if link.id === "revisions"}
|
|
484
|
-
<p>
|
|
485
|
-
This legal page may be updated to comply with legal or operational
|
|
486
|
-
changes. The current effective date is listed at the top of this
|
|
487
|
-
document.
|
|
488
|
-
</p>
|
|
489
475
|
{:else if link.id === "authoritative"}
|
|
490
476
|
<p>
|
|
491
477
|
In the event of any discrepancy between different versions, formats, or
|
|
@@ -504,6 +490,20 @@ This file is part of Network Pro.
|
|
|
504
490
|
of the Company's materials, services, or Licensed Material constitutes
|
|
505
491
|
acceptance of the most current version then in effect.
|
|
506
492
|
</p>
|
|
493
|
+
{:else if link.id === "revisions"}
|
|
494
|
+
<p>
|
|
495
|
+
This legal page may be updated to comply with legal or operational
|
|
496
|
+
changes. The current effective date is listed at the top of this
|
|
497
|
+
document.
|
|
498
|
+
</p>
|
|
499
|
+
{:else if link.id === "contact"}
|
|
500
|
+
<p>
|
|
501
|
+
The Company can be contacted via our
|
|
502
|
+
<a rel={constants.rel} href={contactLink} target={constants.targetBlank}
|
|
503
|
+
>contact form</a>
|
|
504
|
+
or by email at:<br />
|
|
505
|
+
📧 <code>contact (at) s.neteng.pro</code>
|
|
506
|
+
</p>
|
|
507
507
|
{/if}
|
|
508
508
|
|
|
509
509
|
<span class={constants.classSmall}>
|